Инструмент администрирования веб-сайта: имя соединения LocalSqlServer не найдено в конфигурации приложения или строка соединения пуста

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

Однако, когда я пытаюсь управлять пользователями, я получаю следующую ошибку:

Имя соединения "LocalSqlServer" не найдено в конфигурации приложения или строка соединения пуста. в System.Web.Util.SecUtility.GetConnectionString(конфигурация NameValueCollection) в System.Web.Security.SqlMembershipProvider.Initialize(имя строки, конфигурация NameValueCollection) в System.Web.Configuration.ProvidersHelper.InstantiateProvstings провайдер-провайдер (провайдер)

Ясно, что строка подключения LocalSqlServer в порядке, иначе я бы не смог добавить роли, например.

Соответствующие части web.config:

  <connectionStrings>
        <clear />
        <remove name="LocalSqlServer"/>
        <add name="LocalSqlServer" connectionString="Data Source=(local);Initial Catalog=aspnetdb;User Id=LoginUser;Password=password;" providerName="System.Data.SqlClient"/>
  </connectionStrings>

  <system.web>
    <compilation debug="true" targetFramework="4.0" />
    <authentication mode="Forms">
      <forms loginUrl="~/Account/Login.aspx" timeout="2880" defaultUrl="~/admin/admin.aspx" />
    </authentication>
        <membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="15">
            <providers>
                <clear />
                <add
          name="SqlProvider"
          type="System.Web.Security.SqlMembershipProvider"
          connectionStringName="LocalSqlServer"
          applicationName="myapp" />
            </providers>
        </membership>
    <profile>
      <providers>
        <clear />
                <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="LocalSqlServer" applicationName="myapp" />
      </providers>
    </profile>
    <roleManager enabled="true">
      <providers>
        <clear />
                <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="LocalSqlServer" applicationName="myapp" />
      </providers>
    </roleManager>
  </system.web>

Насколько я понимаю, элементы Clear/Remove должны переопределять любые другие файлы конфигурации, но независимо от того, я пытался добавить ту же строку подключения в соответствующий файл machine.config, но безрезультатно.

Есть идеи?

В качестве альтернативы, есть ли причина, по которой я не могу напрямую вызывать хранимые процедуры DB членства? Кто-нибудь знает какую-либо подтверждающую документацию?

3 ответа

Решение

Я отбросил как можно больше первоначальных попыток и начал снова. На этот раз я создал новую отдельную базу данных Membership и закомментировал все элементы поставщика ролей и членства из machine.config...

Это не решило проблему, но в процессе я понял, что, хотя я модифицировал machine.config, WSAT все еще собирал конфигурации поставщика ролей откуда- то. Это привело меня к x86 machine.config, что, в свою очередь, вернуло меня к пулу приложений - пул приложений был настроен на включение 32-битных приложений.

Сброс в false позволил мне преодолеть мою ошибку, хотя и вместо другой ошибки - однако, я буду исследовать эту проблему отдельно и при необходимости создам новую запись.

Я не уверен, почему 32-битный пул приложений должен был вызвать проблему - я все еще ожидал, что мой web.config (с <clear /> пункты) должны были заменить все соответствующие настройки, унаследованные от machine.config - какой бы ни была версия. Так что может быть, что какая-то другая часть моей "перестройки" также внесла свой вклад; сложно сказать.

Боюсь, не совсем то разрешение, на которое я надеялся.

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

В теге диспетчера ролей

Вы не установили defaultProvider что может вызвать проблему.

<roleManager enabled="true" defaultProvider="AspNetSqlRoleProvider">

Смотрите эту ссылку для более подробной информации. Это было также моей ссылкой.

Я тоже заметил

Внутри вашего connectionString "д" вашего User ID не в верхнем регистре. Не уверен, что он чувствителен к регистру.

Кроме того, некоторые темы, кажется, установить Integrated Security= в соответствии с их потребностями, в connectionStringВы можете попытаться сделать то же самое.

Смотрите эту ссылку.

По-видимому,

по умолчанию поставщик членства / роли использует строку соединения "localSQLServer", которая [...] настроена так, чтобы указывать на локальную базу данных SQL Express из корневого web.config. В большинстве случаев на сервере не установлен SQL Express, и вы получите эту ошибку.

Очистив строки подключения, следует выявить эти ошибки.

Ссылка

Но я считаю, что вы уже используете </clear> тег везде, что правильно.

Больше ссылок

Возможно, вы также захотите взглянуть на форумы aspnet, так как это их технология. Я ввел вам сообщение об ошибке и на самом деле получил много результатов.

в заключение

Если какое-либо из этих предложений не решит вашу проблему, я бы предложил начать "с нуля", добавив каждую конфигурацию по одному. Удачи!

Это сработало для меня:

  1. В Visual Studio зайдите в проводник сервера и присоедините aspnetdb
  2. щелкните правой кнопкой мыши aspnetdb - измените соединение
  3. Если проверка соединения работает, нажмите "Дополнительно" и скопируйте строку соединения в нижнюю часть окна.
  4. замените эту строку подключения в вашем web.config/ConnectionStrings/ApplicationServices/ConnectionString
Другие вопросы по тегам