Поставщики ролей ASP.NET MVC для MySQL - PullRequest
2 голосов
/ 28 сентября 2010

Я пытался настроить роль поставщика, используя эту статью .

Это сработало частично - провайдер создал несколько таблиц в MySQL, но я не могу получить к нему доступ из ASP.NET Configuration Tool. Я получаю следующую ошибку при попытке добавить некоторые роли (Роли-> Создать или управлять ролями):

Произошла ошибка сети или экземпляра при установлении соединения с SQL Server. Сервер не найден или не был доступен. Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен для разрешения удаленных подключений. (поставщик: поставщик именованных каналов, ошибка: 40 - не удалось открыть соединение с SQL Server) в System.Web.Administration.WebAdminPage.CallWebAdminHelperMethod (Boolean isMembership, String methodName, параметры Object [], Type [] paramTypes) в ASP. security_roles_manageallroles_aspx.BindGrid () в ASP.security_roles_manageallroles_aspx.Page_Load () в System.Web.Util.CalliHelper.ArglessFunctionCaller (IntPtr fp, Object o) в System.Web.Util.CalliEgateReader.Event.Hell. Web.UI.Control.OnLoad (EventArgs e) в System.Web.UI.Control.LoadRecursive () в System.Web.UI.Page.ProcessRequestMain (логический includeStagesBeforeAsyncPoint, логический includeStagesAfterAsyncPoint)

Строка My Connection (которая работает для доступа к данным с помощью LINQ to MySQL (с помощью dblinq)):

<connectionStrings>
<add name="ZenToolDB" connectionString="Database=zentool;Data Source=localhost;User Id=root;Password=supersecretpassword" providerName="MySql.Data.MySqlClient" />
</connectionStrings>

Есть идеи, как заставить это работать? Спасибо!

РЕДАКТИРОВАТЬ: Добавлен фрагмент web.config с провайдерами:

<membership defaultProvider="MySqlMembershipProvider">
      <providers>
        <clear/>
        <add name="MySqlMembershipProvider"
             type="MySql.Web.Security.MySQLMembershipProvider,
             MySql.Web, Version=6.2.2.0, Culture=neutral,
             PublicKeyToken=c5687fc88969c44d"
             autogenerateschema="true"
             connectionStringName="ZenToolDB"
             enablePasswordRetrieval="false"
             enablePasswordReset="true"
             requiresQuestionAndAnswer="false"
             requiresUniqueEmail="false"
             passwordFormat="Hashed"
             maxInvalidPasswordAttempts="5"
             minRequiredPasswordLength="6"
             minRequiredNonalphanumericCharacters="0"
             passwordAttemptWindow="10"
             passwordStrengthRegularExpression=""
             applicationName="/"/>
      </providers>
    </membership>
        <profile>
            <providers>
                <clear />
                <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="ZenToolDB" applicationName="/" />
            </providers>
        </profile>
        <roleManager enabled="true" defaultProvider="AspNetSqlRoleProvider">
      <providers>
        <clear />
        <add connectionStringName="ZenToolDB" applicationName="/" name="AspNetSqlRoleProvider"
            type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        <!--
        <add applicationName="/" name="AspNetWindowsTokenRoleProvider"
            type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        -->
      </providers>
    </roleManager>

1 Ответ

1 голос
/ 28 сентября 2010

В вашем web.config есть раздел с поставщиками ролей. Убедитесь, что он указывает на нового поставщика ролей?Если нет, возможно, он пытается использовать поставщик роли по умолчанию.

Значение по умолчанию выглядит следующим образом и использует System.Web.Security.SqlRoleProvider, который выглядит как ссылки в трассировке стека.

<membership>
  <providers>
    <clear/>
    <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"
         enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
         maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
         applicationName="/" />
  </providers>
</membership>

<profile>
  <providers>
    <clear/>
    <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" />
  </providers>
</profile>

<roleManager enabled="false">
  <providers>
    <clear/>
    <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
    <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
  </providers>
</roleManager>
...