Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 你必须称之为;WebSecurity.InitializeDatabaseConnection“;但我知道_C#_Asp.net Mvc_Asp.net Mvc 4_Asp.net Membership - Fatal编程技术网

C# 你必须称之为;WebSecurity.InitializeDatabaseConnection“;但我知道

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

*在调用“WebSecurity”类的任何其他方法之前,必须先调用“WebSecurity.InitializeDatabaseConnection”方法。这个电话 应该放在您的根目录下的_AppStart.cshtml文件中 地点*

我得到这个错误,断断续续,随机的,不知道原因是什么。在我的路径配置中。索引控制器,索引操作是默认操作。定义如下:

[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属性

韩元