Инструмент администрирования веб-сайта: имя соединения 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, так как это их технология. Я ввел вам сообщение об ошибке и на самом деле получил много результатов.
в заключение
Если какое-либо из этих предложений не решит вашу проблему, я бы предложил начать "с нуля", добавив каждую конфигурацию по одному. Удачи!
Это сработало для меня:
- В Visual Studio зайдите в проводник сервера и присоедините aspnetdb
- щелкните правой кнопкой мыши aspnetdb - измените соединение
- Если проверка соединения работает, нажмите "Дополнительно" и скопируйте строку соединения в нижнюю часть окна.
- замените эту строку подключения в вашем web.config/ConnectionStrings/ApplicationServices/ConnectionString