asp.net – 在调用“WebSecurity”类的任何其他方法之前,必须调
我无法使WebSecurity对象在任何地方工作,除了已经在AccountController.cs文件中生成。帐户控制器的[InitializeSimpleMembership]属性设置在顶部。登录功能不要抱怨调用WebSecurity.Login(…),例如。我向AccountController添加了一个小孩操作:
[ChildActionOnly] [AllowAnonymous] public ActionResult NavBar() { NavBarViewModel viewModel = new NavBarViewModel(); viewModel.LinkItems = new List<NavBarLinkItem>(); if (Request.IsAuthenticated) { SimpleRoleProvider roleProvider = new SimpleRoleProvider(); if (roleProvider.IsUserInRole(User.Identity.Name,"User")) { viewModel.LinkItems.Add(new NavBarLinkItem() { Title = "Create Project",Action = "Create",Controller = "Project" }); } } viewModel.LinkItems.Add(new NavBarLinkItem() { Title="Help",Action="Index",Controller="Help" }); return PartialView("_NavBar",viewModel); } 原来是这样,代码崩溃在“if(roleProvider.IsUserInRole(User.Identity.Name,”User“))”与主题错误消息。所以我进入InitialzeSimpleMembershipAttribute.cs文件,并将这行复制/粘贴到我的函数的顶部: WebSecurity.InitializeDatabaseConnection("DefaultConnection","UserProfile","UserId","UserName",autoCreateTables: true); …并收到WebSecurity.InitializeDatabaseConnection只应调用一次的错误消息。这是有道理的,因为在控件定义的顶部有一个应该已经调用了这个函数的属性(看起来好像这样)。所以要安全,我更改以上调用: if (!WebSecurity.Initialized) { WebSecurity.InitializeDatabaseConnection("DefaultConnection",autoCreateTables: true); } …并收回原来的错误消息,WebSecurity.InitializeDatabaseConnection应该在blah blah blah之前调用。对这种疯狂的任何洞察将不胜感激 解决方法
这里有一个更好的解释:
http://odetocode.com/blogs/scott/archive/2012/09/24/perils-of-the-mvc4-accountcontroller.aspx 这就是你要做的所有事情: >从AccountController顶部删除[InitializeSimpleMembership] 您不必将InitializeDatabaseConnection()调用添加到AuthConfig.RegisterAuth(),但它似乎是逻辑的位置,并保持您的Global.asax更清洁。 你本来在做的是从原始属性中提取初始化调用,并在Application_Start上显式调用它。属性中的其他内容只是条件检查,以防您不使用(或不需要)SimpleMembership。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – ASP.NET MVC Session vs Global vs Cache
- entity-framework-4 – 在我的自定义MembershipProvider中使
- asp.net – 为会话值的关键名称创建枚举是一个好主意吗?
- asp.net-mvc – 如何在客户端Kendo UI网格中实现服务器端分
- asp.net-mvc – 使用ASP.NET MVC帮助器方法设置maxlength和
- asp.net-mvc – 从一个项目到另一个项目调用控制器
- asp.net – 为什么不删除Server和X-Powered-By标头?
- asp.net-core – Windows和Linux上的dnxcore50有什么区别?
- asp.net – 使下拉列表项不可选
- asp.net – web.config角色和用户名是否允许空格?
- asp.net – SignalR Autofac OWIN:为什么Global
- asp.net-mvc-2 – 如何在ASP.NET MVC中实现自定义
- asp.net-mvc – 在MVC中,部分视图是否继承了父视
- asp.net – 如何在调用Crystal Reports ExportTo
- 为什么我不能在运行时编辑我的ASP.NET Web应用程
- asp.net-web-api – System.Web.Http.WebHost中的
- asp.net-mvc-3 – 为什么Razor将验证属性放在@Ht
- asp.net – 将persistentCookiesOnPassiveRedire
- templates – 相当于ASP Classic中的母版页
- 从asp页面调用C#函数