2013-03-17 103 views
2

我有以下的Asp.Net MVC 4代码,它提高了控制器DealController的第18行上的错误。现在只有当我在本地PC上使用VS 2012进行调试时重建项目后才会发生这种情况。之前必须调用“WebSecurity.InitializeDatabaseConnection”方法吗?

Line 16: private IQueryable<Deal> Deals 
Line 17: { 
Line 18: get { return User.IsInRole("Admin") ? _db.Deals : _db.Deals.Where(d => d.CreatedBy == User.Identity.Name); } 
Line 19: } 

你所说的“WebSecurity”类的其他任何方法之前,必须调用“WebSecurity.InitializeDatabaseConnection”的方法。此调用应放置在您网站根目录的_AppStart.cshtml文件中。

我应该在所有这些要求User.IsInRole()User.Identity.Name控制器添加属性[InitializeSimpleMembership]?现在只能在AccountController上添加。

+0

可能重复[在调用“WebSecurity”类的其他方法之前,您必须调用“WebSecurity.InitializeDatabaseConnection”方法(http://stackoverflow.com/questions/13128218/you-must-call-the -websecurity-initializedatabaseconnection-method-before-you-c) – hjpotter92 2013-03-24 04:46:50

回答

7

为控制器添加[InitializeSimpleMembership]解决了问题。

+0

这不是一个合适的解决方案。因为如果你有下面的代码: [授权] [InitializeSimpleMembership] 公共类的AccountController:控制器 { // ... } 作为动作过滤器,ISMA挂接到OnActionExecuting执行懒惰初始化工作,但这在生命周期中可能太晚了。 然后它会崩溃。例如,如果您有以下代码: [Authorize(Roles =“Sales”)]] – Rahatur 2013-12-26 09:42:12

相关问题