2013-07-23 2 views
1

* Перед вызовом любого другого метода класса «WebSecurity» вы должны вызвать метод «WebSecurity.InitializeDatabaseConnection». Этот вызов должен быть помещен в файл _AppStart.cshtml в корневом каталоге вашего сайта . *Вы должны позвонить в «WebSecurity.InitializeDatabaseConnection», но я ДОЛЖЕН

Я получаю эту ошибку, и выключается, случайно и не уверен, что причина. В моем маршруте config. Указатель индекса, действие индекса - по умолчанию. и вот определение:

[Authorize(Roles = "admin")] 
[InitializeSimpleMembership] 
public class IndexController : Controller 

Everytime перезапустить приложение, если я не выйти, я получаю вышеуказанную ошибку. Затем я выхожу из системы и снова вхожу в систему, и ошибка исчезает.

Почему это происходит?

Как я могу решить эту проблему?

Я использую localdb, если это поможет.

ответ

3

Проблема возникает из-за того, что функция Application_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

Смежные вопросы