Проблемы с поставщиками членства - PullRequest
0 голосов
/ 26 ноября 2010

У меня проблемы с членством в ASP.NET 4.0.Я хочу, чтобы все мои настройки членства были в моем файле web.config, и я не использовал machine.config.Я сохраняю членство на удаленном сервере базы данных SQL Server 2008 R2 с именем MYSERVER \ A.Вот соответствующие разделы web.config

<connectionStrings>
    <clear/>
    <add name="MarksDB" connectionString="Server=MYSQLSERVER\A;Database=test_d; Trusted_Connection=Yes; Application Name=MarksDB"/>
</connectionStrings>
<system.web>

<authorization>
   <allow roles="Admins" />
   <deny users="?" />
</authorization>
<authentication mode="Forms">
   <forms name="MarksDB" />
</authentication>
<membership defaultProvider="MarksDBMembershipProvider">
  <providers>
    <clear/>
    <add 
      name="MarksDBMembershipProvider" 
      type="System.Web.Security.SqlMembershipProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
      connectionStringName="MarksDB" 
      enablePasswordRetrieval="false" 
      enablePasswordReset="true" 
      requiresQuestionAndAnswer="true" 
      applicationName="MarksDBMembershipProvider" 
      requiresUniqueEmail="false" 
      passwordFormat="Hashed" 
      maxInvalidPasswordAttempts="5" 
      minRequiredPasswordLength="7" 
      minRequiredNonalphanumericCharacters="1" 
      passwordAttemptWindow="10" 
      passwordStrengthRegularExpression=""/>

  </providers>
</membership>

<roleManager enabled="true" defaultProvider="MarksDBRoleProvider">
  <providers>
    <clear/>
    <add 
        name="MarksDBRoleProvider"
        type="System.Web.Security.SqlRoleProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
        connectionStringName="MarksDB"
        applicationName="MarksDBRoleProvider"
        />        
  </providers>      
</roleManager>

В Visual Studio 2010, когда я захожу в WebSite-> ASP.NET Configuration и нажимаю Add User на вкладке Security, я получаю эту ошибку:

An error was encountered. Please return to the previous page and try again.

The following message may help in diagnosing the problem: The connection name 'MarksDB' was not found in the applications configuration or the connection string is empty. at System.Web.Util.SecUtility.GetConnectionString(NameValueCollection config) at System.Web.Security.SqlMembershipProvider.Initialize(String name, NameValueCollection config) at System.Web.Configuration.ProvidersHelper.InstantiateProvider(ProviderSettings providerSettings, Type providerType)

Я не уверен, как решить эту проблему.Есть идеи?

1 Ответ

0 голосов
/ 26 ноября 2010

Вы должны использовать атрибут applicationName как в поставщике членства, так и в диспетчере ролей, чтобы указать свое приложение (поскольку у вас может быть другое приложение, использующее ту же базу данных). Но вы указываете Application Name в строке подключения.

Я полагаю, что вы удалили бы applicationName из поставщика членства и из поставщика ролей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...