Отключить поставщика членства в SQL (проверка подлинности с помощью форм ASP.Net) - PullRequest
3 голосов
/ 30 марта 2011

Я настроил тривиальный веб-сайт предварительного просмотра для клиента, которому требуется базовая защита паролем. Я использую проверку подлинности с помощью учетных данных, указанных в web.config.

Все отлично работает на моей коробке (знаменитые последние слова)

Однако при развертывании на рабочем веб-сайте под управлением Win2008 код аутентификации пытается открыть базу данных SQL Server (у меня нет ссылок на что-либо из SQL в web.config). Как я могу отключить это поведение, чтобы аутентификация основывалась на учетных данных, которые я ввел в web.config?

Исключение в журнале событий

Невозможно подключиться к базе данных SQL Server. в System.Web.Management.SqlServices.GetSqlConnection (Строковый сервер, Строковый пользователь, Строковый пароль, Булево доверенное значение, Строка connectionString) в System.Web.Management.SqlServices.SetupApplicationServices (Строковый сервер, Строковый пользователь, Строковый пароль, Логическое доверенное значение, Строковое connectionString, Строковая база данных, String dbFileName, Функции SqlFeatures, Булева установка) в System.Web.DataAccess.SqlConnectionHelper.CreateMdfFile (String fullFileName, String dataDir, String connectionString) в System.Web.DataAccess.SqlConnectionHelper.EnsureSqlExpressDBFile (String connectionString) ... в System.Data.SqlClient.SqlConnection.Open () в System.Web.Management.SqlServices.GetSqlConnection (строковый сервер, строковый пользователь, строковый пароль, логическое доверенное значение, строковая строка подключения)
http://my.site.com/Login.aspx?ReturnUrl=/

web.config (соответствующая часть)

     <system.web>
        <compilation targetFramework="4.0" />
    <authentication mode="Forms">
      <forms name="appNameAuth" path="/" loginUrl="Login.aspx" protection="All" timeout="30">
        <credentials passwordFormat="SHA1">
          <user name="me" password="SHA1OfMyPassword" />
        </credentials>
      </forms>
    </authentication>
    <authorization> 
      <deny users="?"/>  
      <allow users="me" />
    </authorization>    

  </system.web>

1 Ответ

11 голосов
/ 30 марта 2011

Оказывается, на рабочем компьютере поставщик членства в SQL был определен в machine.config.Я не думаю, что команда ops изменила что-то по сравнению с установкой Windows 2008 по умолчанию, так что, вероятно, это обычно относится к этой платформе.

Чтобы удалить ссылки на любых поставщиков SQL, определенных на более высоком уровне, включите следующее в вашweb.config

<membership>
    <providers>
        <clear />       
    </providers>
</membership>
<roleManager enabled="false">
    <providers>
        <clear />       
    </providers>
</roleManager>
<profile>
    <providers>
        <clear />       
    </providers>
</profile>
...