Tag: asp.net mvc

ASP.NET MVC 4参数由正斜杠分隔“/”未正确传递args

我试图遵循许多站点使用的约定,该约定传递带有多个正斜杠的参数,而不是使用GET模型。 也就是说,我希望使用以下URL: http://www.foo.bar/controller/action?arg1=a&arg2=b&arg3=c 以这种方式: http://www.foo.bar/controller/action/a/b/c 我目前有(大多数)工作,使用以下内容: public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute(“{resource}.axd/{*pathInfo}”); routes.MapRoute( name: “Default”, url: “{controller}/{action}/{id}”, defaults: new { controller = “Home”, action = “Index”, id = UrlParameter.Optional } ); routes.MapRoute( name: “Sandbox”, url: “Sandbox/{action}/{*args}”, defaults: new { controller = “Sandbox”, action = “Index”, args = UrlParameter.Optional } ); } 但是,如果我传递类似的东西 http://www.foo.bar/Sandbox/Index/a 要么 […]

如何从列表集合中删除对象?

我不得不改变我的代码行。 我之前有这样的事情 // this is in a static method. List mySTring = new List(); mySTring.add(“one”); mySTring.add(“two”); 但是在我的一个页面上,我有一个不需要字段“2”的下拉列表,所以我所做的只是编写重复的代码而不是 myString.remove(“two”); 现在我需要将列表更改为List myList = new List(); 所以我现在看起来像这样: List myList = new List() { new SelectListItem() { Text = “one”, Value = “one”}, new SelectListItem() { Text = “two”, Value = “two”}, }; 那么现在如何删除包含“two”的selectListItem? 我知道我可能会使用索引删除。 但是我可能会在将来添加到列表中,所以如果索引发生变化,我不想开始搜索并更改它。 谢谢

为什么我的cookie没有设置?

我正在玩ASP.NET,并尝试在一个动作中设置一个cookie,这个动作将在另一个动作中读取。 奇怪的是:cookie被设置,但在访问另一个页面时失去了它的价值。 这是我简单的控制器代码: public class HomeController : Controller { public ActionResult About() { var cookie = Response.Cookies.Get(“sid”); ViewData[“debug”] = “Id: ” + cookie.Value; return View(); } public ActionResult DoLogin() { var cookie = new HttpCookie(“sid”, Guid.NewGuid().ToString()); cookie.HttpOnly = true; Response.Cookies.Add(cookie); return RedirectToAction(“About”); } } 流程是这样的:首先我访问/Home/DoLogin ,然后我被重定向到/Home/About哪个应该实际输出sid cookie的值。 但是cookie没有任何价值。 我的浏览器未禁用Cookie 我知道ASP.NET有自己的会话处理机制,只是玩弄并偶然发现这个cookie问题 谢谢你的任何提示!

IEnumerable 在未引用的程序集中定义 – 新的NuGet类库项目

我正在使用VS2015社区,我安装了.NET 4.6.01040,并按照这些说明安装了ASP.NET 5。 我想开始将一个站点从MVC5迁移到MVC6所带来的所有其他更新,所以我开始使用包含我的Data模型的Entity Class库项目。 这是我的project.json文件的样子: { “version”: “1.0.0-*”, “description”: “test.Entities Class Library”, “authors”: [ “me” ], “tags”: [ “” ], “projectUrl”: “”, “licenseUrl”: “”, “frameworks”: { “net461”: { “dependencies”: { “System.Runtime”: “4.0.0.0” } }, “dotnet5.4”: { “dependencies”: { “Microsoft.CSharp”: “4.0.1-beta-23516”, “System.Runtime”: “4.0.21-beta-23516”, “System.Linq”: “4.0.1-beta-23516” “System.Collections”: “4.0.11-beta-23516”, “System.Threading”: “4.0.11-beta-23516” } } }, “dependencies”: { “EntityFramework.Core”: […]

测试自定义AuthorizationAttribute时抛出NullReferenceException

我看了看: 如何进行unit testing以测试检查请求标头的方法? 如何使用moq模拟Controller.User 如何对应用了[Authorize]属性的控制器方法进行unit testing? 我正在尝试测试我编写的自定义AuthorizeAttribute。 我尝试了很多不同的东西来让它发挥作用。 这是我目前的尝试。 [AttributeUsage(AttributeTargets.All, AllowMultiple = false, Inherited = true)] public class ConfigurableAuthorizeAttribute : AuthorizeAttribute { private Logger log = new Logger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); private IRoleHelper roleHelper; public ConfigurableAuthorizeAttribute() { roleHelper = new ADRoleHelper(); } public ConfigurableAuthorizeAttribute(IRoleHelper roleHelper) { this.roleHelper = roleHelper; } protected override bool AuthorizeCore(HttpContextBase httpContext) { if (!httpContext.User.Identity.IsAuthenticated) […]

nHibernate在多个线程上枚举相同的集合

我有一个生产应用程序(IIS8,MVC5,nHibernate DAL),我注意到最近的高CPU使用率。 循环应用程序池修复它但在从服务器进行一些诊断和内存转储以分析问题后,我注意到多个线程的一致模式试图枚举相同的集合。 最常见的一点是应用程序检查用户角色的位置。 我怀疑这可能更多的是这个代码是为每个validation权限的请求运行的,所以它更可能是它被卡住的集合? public IList GetRoles(string username) { var login = GetLoginForUser(username); return !login.Groups.Any() ? new List() : login.Groups.SelectMany(x => x.Roles).OrderBy(x => x.DisplayName).ToList(); } 我的CurrentUser对象有一个简单的接口,包含从依赖项解析器注入的用户的详细信息。 我已经validation了UserId存在且有效,这一切都非常简单。 当我看到这两个请求被挂起的转储时,我得到一个警告,多个线程正在枚举一个集合。 当我检查转储中的两个线程时,我看到几乎相同的堆栈跟踪。 (我已经在堆栈跟踪中重命名了一些命名空间细节,但它没有改变)。 两个请求中的userId(和结果配置文件)是相同的,因此它似乎是由于两个单独的线程试图在几乎同时从数据库加载相同的对象。 堆栈跟踪在下面,但我不知道从这里去哪里以解决这个问题。 System.Collections.Generic.Dictionary`2[[System.__Canon, mscorlib],[System.Nullable`1[[System.Int32, mscorlib]], mscorlib]].FindEntry(System.__Canon)+129 System.Collections.Generic.Dictionary`2[[System.__Canon, mscorlib],[System.Nullable`1[[System.Int32, mscorlib]], mscorlib]].TryGetValue(System.__Canon, System.Nullable`1 ByRef)+12 NHibernate.AdoNet.ColumnNameCache.GetIndexForColumnName(System.String, NHibernate.AdoNet.ResultSetWrapper)+25 NHibernate.AdoNet.ColumnNameCache.GetIndexForColumnName(System.String, NHibernate.AdoNet.ResultSetWrapper)+25 NHibernate.AdoNet.ResultSetWrapper.GetOrdinal(System.String)+e NHibernate.AdoNet.ResultSetWrapper.GetOrdinal(System.String)+e NHibernate.Type.NullableType.NullSafeGet(System.Data.IDataReader, System.String)+29 NHibernate.Type.NullableType.NullSafeGet(System.Data.IDataReader, System.String[], NHibernate.Engine.ISessionImplementor, System.Object)+16 […]

MVC局部视图中的多态ViewModel集合和渲染

我在MVC应用程序中遇到ViewModel的多态集合问题。 我通过Web服务调用收到了这个,我需要迭代它们并根据对象类型给它们自己的局部视图。 public abstract class ProvinceViewModel { public string Code { get; set; } } public sealed class OntarioViewModel : ProvinceViewModel { } public sealed class QuebecViewModel : ProvinceViewModel {} 在我看来,我试图迭代它们并分配局部视图。 我必须在这里进行大量的类型转换才能使其正常工作。 如果我尝试将其移动到控制器操作并传入抽象类型,我将得到一个错误,我们无法创建抽象类的实例。 ICollection ProvinceList; // collection receive via service @for (int i = 0, c = ProvinceList.Count; i < c; i++) { var currentProvince […]

MVC错误:未将对象引用设置为对象的实例

今天我已经接近放弃这个mvc应用了!! 我正在关注Mvc音乐商店教程,我被困在第54页。 这是我得到的错误: System.NullReferenceException:未将对象引用设置为对象的实例。 错误发生在以下代码中的第三个段落(下拉列表)中: <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl” %> model.Title) %> model.Title) %> model.Title) %> model.Price) %> model.Price) %> model.Price) %> model.AlbumArtUrl) %> model.AlbumArtUrl) %> model.AlbumArtUrl) %> model.Artist) %> model.Genre) %> 此ascx文件包含在Edit.aspx文件中: <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage” %> Edit Edit Edit Album model.Album, new { Artists = Model.Artists, Genres = Model.Genres }) %> […]

我无法在剃刀视图中设置断点

我知道可以在MVC Razor视图中设置断点但是出了点问题并且它不再起作用了.. 我试图重新启动visual studio 2013并更改一些调试选项。 你有什么建议吗?

解决单身人士的Autofac会造成瓶颈

我在asp.net MVC应用程序中使用Autofac并遇到了锁定问题。 只要服务依赖于单例,该服务就会从根生存期范围中解析出来。 这是因为Autofac: 从根范围解析单例组件 从根作用域解析具有必须从root解析的依赖项的任何组件。 此外,当从任何范围解析时,Autofac会锁定该范围。 我认为这些都是很好的设计决策。 我的问题是行为不端的阶级,他们依赖单身人士并且建设者很慢。 这些为任何需要解决单身人士的人造成了瓶颈。 由于这是在MVC应用程序中,每个请求都会映射到构造函数注入的某个MVC控制器。 此外,我的大多数控制器都依赖于各种单例服务(日志记录,缓存等)。 对于具有快速构造函数的东西,这不是问题。 但是,只要请求一个写得不好的类,我的吞吐量就会因为每个新请求都被阻塞在那个行为不当的构造函数上。 例如: 鉴于这3个class级 //registered as SingleInstance() class MySingleton {} class BadTransient { public BadTransient(MySingleton s) { Thread.Sleep(5000); } } class FriendlyTransient {} 解决了 using(var scope = container.BeginLifetimeScope(“nested scope”)) { //resolves from child scope var myFriend = scope.Resolve(); //resolves from root because it’s […]