Подтвердить что ты не робот

SimpleMembershipProvider не работает

Я начал новый интернет-проект с VS2012 и стараюсь немного перестроить проект, и я не могу заставить SimpleMemberhsipProvider работать. В принципе, все, что я сделал, - это перемещение объектов моделей в основной проект вместе с несколькими другими элементами. Я реализовал Ninject и пытаюсь немного абстрагировать Entity, используя шаблон репозитория для получения моих данных. Мне действительно не кажется, что я сильно изменился с текущим проектом, но по какой-то причине, когда я запускаю приложение, я получаю:

{ "Функция Role Manager не включена." }

ActionFilter, предоставляемый инфраструктурой, является причиной возникновения ошибки, когда:

WebSecurity.InitializeDatabaseConnection( "DefaultConnection", "UserProfile", "Id", "UserName", autoCreateTables: true);

.

Вот некоторые из stacktrace:

[ProviderException: функция Role Manager не включена.]
System.Web.Security.Roles.EnsureEnabled() +9561885
System.Web.Security.Roles.get_Provider() +8
WebMatrix.WebData.WebSecurity.InitializeProviders(DatabaseConnectionInfo connect, String userTableName, String userIdColumn, String userNameColumn, Boolean autoCreateTables) +104
WebMatrix.WebData.WebSecurity.InitializeDatabaseConnection(String connectionStringName, String userTableName, String userIdColumn, Строка userNameColumn, Boolean autoCreateTables) +100
InoutBoard.Core.Infrastructure.Filters.SimpleMembershipInitializer..ctor() в c:\Users\Kyle\Documents\Visual Studio 2012\Projects\InoutBoard\InoutBoard.Core\Инфраструктура\Filters\InitializeSimpleMembershipAttribute.cs: 42

[InvalidOperationException: простая базовая база данных ASP.NET не может быть инициализирована. Для получения дополнительной информации см. http://go.microsoft.com/fwlink/?LinkId=256588]
InoutBoard.Core.Infrastructure.Filters.SimpleMembershipInitializer..ctor() в c:\Users\Kyle\Documents\Visual Studio 2012\Projects\InoutBoard\InoutBoard.Core\Инфраструктура\Filters\InitializeSimpleMembershipAttribute.cs: 46

Я размещаю код в github по следующей ссылке https://github.com/keroger2k/InoutBoard

4b9b3361

Ответ 1

Первый способ

Проверьте ответ sphair вне (в текущем потоке).

Второй способ

Добавьте следующие сборки в web.config:

<system.web>
  <compilation debug="true" targetFramework="4.5">
    <assemblies>
      <add assembly="WebMatrix.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      <add assembly="WebMatrix.WebData, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    </assemblies>
  </compilation>
</system.web>

Обновление

Сборка WebMatrix.WebData содержит метод запуска для инициализации поставщиков членства/роли и включения RoleManager (PreApplicationStartCode.Start). Но ASP.NET не смог найти это для запуска в вашем случае. Добавляя эти две строки кода, мы заставляем ASP.NET искать эти сборки для PreApplicationStartMethodAttribute(s).

Ответ 2

В случае, если другие получают эту ошибку, и вышеупомянутое решение не работает, как в моем случае. Он сказал недействительный дочерний объект, когда я попытался добавить разметку сборок. Мне нужно было указать теги roleManager и member, как показано ниже. Как только я это сделал, работала база данных обновлений.

<roleManager enabled="true" defaultProvider="SimpleRoleProvider">
      <providers>
        <clear/>
        <add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData"/>
      </providers>
    </roleManager>
    <membership defaultProvider="SimpleMembershipProvider">
      <providers>
        <clear/>
        <add name="SimpleMembershipProvider" 
             type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData"/>
      </providers>
    </membership> 

Ответ 3

У меня была такая же ошибка в моей хостинговой компании (WinHost.com - они отличные BTW).

Моим решением было добавить в web.config:

<appSettings>
    <add key="enableSimpleMembership" value="true" />
</appSettings>

Ответ 4

Вместо того, чтобы добавлять сборки в web.config, как предлагает Мехди Голчин, альтернативой является изменение ссылок на сборки в WebMatrix.Data и WebMatrix.WebData для CopyLocal = True.