asp.net-mvc – 为什么class属性在WebAPI中不起作用?
我使用默认的ASP.NET MVC4 Web应用程序模板和Visual Studio在Filters目录中创建InitializeSimpleMembershipAttribute并创建帐户控制器,如下所示:
[Authorize] [InitializeSimpleMembership] public class AccountController : Controller { /* Some Default Actions like Login,LogOff,Register,...*/ } 我尝试创建AccountController WebAPI,我的代码是: [Authorize] [InitializeSimpleMembership] public class APIAccountController : ApiController { [System.Web.Http.AcceptVerbs("GET","POST")] [System.Web.Http.HttpGet] [System.Web.Http.HttpPost] [System.Web.Http.AllowAnonymous] [System.Web.Mvc.ValidateAntiForgeryToken] public string Login(string UserName,string Password,bool RememberMe) { if (WebSecurity.Login(UserName,Password,persistCookie: RememberMe)) { return "OK"; } return "Failed"; } } 现在,当我打电话给api时,它在这一行中断: if(WebSecurity.Login(UserName,persistCookie:RememberMe)) 并说:在调用“WebSecurity”类的任何其他方法之前,必须调用“WebSecurity.InitializeDatabaseConnection”方法. 我在InitializeSimpleMembershipAttribute中运行它,webapi控制器与控制器相同. 为什么属性不能在WebAPI中运行? 解决方法
[InitializeSimpleMembership] – 属性继承自System.Web.Mvc.ActionFilterAttribute
Web API的操作筛选器需要从System.Web.Http.Filters.ActionFilterAttribute继承,因此实际上不会在Web API控制器上执行筛选器. 你可以做两件事: >从System.Web.Http.Filters.ActionFilterAttribute继承实现自己的过滤器 private static SimpleMembershipInitializer _initializer; private static object _initializerLock = new object(); private static bool _isInitialized; protected void Application_Start() { // Ensure ASP.NET Simple Membership is initialized only once per app start LazyInitializer.EnsureInitialized(ref _initializer,ref _isInitialized,ref _initializerLock); } 为此,您需要将逻辑从InitializeMembership移动到单独的类中,并确保您可以从global.asax访问它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 如何使用IIS7在web.config中设置处理程序?
- 如何在ASP.NET Core MVC 6中强制执行小写路由?
- asp.net – 如何在转发器中每行显示x个项目?
- asp.net-mvc – 通过删除空格打破我的calc语句的MVC捆绑?
- ASP / C#会话变量 – 未将对象引用设置为对象的实例
- asp.net-mvc – 将带有字符串的json数组发布到Asp.Net MVC动
- asp.net-mvc – mvc中的多个内容占位符?
- asp.net – 允许远程访问IIS 7.5
- asp.net – 每个应用程序池的内存使用
- 在asp.net mvc 2.0中使用Html.DropDownListFor帮助器时如何