C# 你必须称之为;WebSecurity.InitializeDatabaseConnection“;但我知道
*在调用“WebSecurity”类的任何其他方法之前,必须先调用“WebSecurity.InitializeDatabaseConnection”方法。这个电话 应该放在您的根目录下的_AppStart.cshtml文件中 地点* 我得到这个错误,断断续续,随机的,不知道原因是什么。在我的路径配置中。索引控制器,索引操作是默认操作。定义如下:C# 你必须称之为;WebSecurity.InitializeDatabaseConnection“;但我知道,c#,asp.net-mvc,asp.net-mvc-4,asp.net-membership,C#,Asp.net Mvc,Asp.net Mvc 4,Asp.net Membership,*在调用“WebSecurity”类的任何其他方法之前,必须先调用“WebSecurity.InitializeDatabaseConnection”方法。这个电话 应该放在您的根目录下的_AppStart.cshtml文件中 地点* 我得到这个错误,断断续续,随机的,不知道原因是什么。在我的路径配置中。索引控制器,索引操作是默认操作。定义如下: [Authorize(Roles = "admin")] [InitializeSimpleMembership] public class Inde
[Authorize(Roles = "admin")]
[InitializeSimpleMembership]
public class IndexController : Controller
每次我重新启动应用程序时,如果我没有注销,就会出现上述错误。然后我注销并再次登录,错误消失
为什么会这样
我如何解决这个问题
如果有帮助的话,我正在使用localdb。出现问题的原因是应用程序的Start()函数只在第一次用户操作时触发。但IndexController是在用户事件执行操作之前触发的。只需从您的项目中删除[InitializeSimpleMembership],这也让我很沮丧 只需将以下代码添加到global.asax
private static SimpleMembershipInitializer _initializer;
private static object _initializerLock = new object();
private static bool _isInitialized;
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
AuthConfig.RegisterAuth();
LazyInitializer.EnsureInitialized(ref _initializer, ref _isInitialized, ref _initializerLock);
}
public class SimpleMembershipInitializer
{
public SimpleMembershipInitializer()
{
using (var context = new UsersContext())
context.UserProfiles.Find(1);
if (!WebSecurity.Initialized)
WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);
}
}
当然,请确保创建了正确的dbContext(),并设置了与项目匹配的正确InitializeDatabaseConnections属性
Kr发生此问题的原因是应用程序的Start()函数仅在第一次用户操作时触发。但IndexController是在用户事件执行操作之前触发的。只需从您的项目中删除[InitializeSimpleMembership],这也让我很沮丧 只需将以下代码添加到global.asax
private static SimpleMembershipInitializer _initializer;
private static object _initializerLock = new object();
private static bool _isInitialized;
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
AuthConfig.RegisterAuth();
LazyInitializer.EnsureInitialized(ref _initializer, ref _isInitialized, ref _initializerLock);
}
public class SimpleMembershipInitializer
{
public SimpleMembershipInitializer()
{
using (var context = new UsersContext())
context.UserProfiles.Find(1);
if (!WebSecurity.Initialized)
WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);
}
}
当然,请确保创建了正确的dbContext(),并设置了与项目匹配的正确InitializeDatabaseConnections属性
韩元