SqlRoleProvider не может подключиться к БД - PullRequest
0 голосов
/ 06 июля 2010

У меня есть следующий конфиг для ролей, использующих стандартный SqlRoleProvider, но я получаю сообщение об ошибке при попытке открыть страницу безопасности в инструменте администрирования сайта wweb:

  <roleManager enabled="true" defaultProvider="AspNetSqlRoleProvider">
    <providers>
      <remove name="AspNetSqlRoleProvider"/>
      <add name="AspNetSqlRoleProvider"
           type="System.Web.Security.SqlRoleProvider"
           connectionStringName="PoyntingInstallationConnectionString"
           applicationName="/" />
    </providers>
  </roleManager>

В БД есть все таблицы ролей и т. Д.

1 Ответ

1 голос
/ 06 июля 2010

Убедитесь, что PoyntingInstallationConnectionString находится в вашем файле web.config, правильно настроен и указывает на базу данных, которая содержит ваши таблицы.

Ролями будут записи в таблице aspnet_Roles, а не роли базы данных. И по умолчанию роли отсутствуют, поэтому таблица должна быть пустой при первом запуске сценария.

Редактировать : Можете ли вы предоставить более подробную информацию о том, как вы создали базу данных аутентификации? То есть Вы запускали инструмент aspnet_regsql напрямую или создавали и запускали сценарии отдельно?

Редактировать 2 : Средство aspnet_regsql достаточно просто запустить - оно находится в папке .NET Framework v2.0. (Расположение по умолчанию C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727)

Существует множество параметров, которые можно использовать для запуска из командной строки, или, если вы запустите его без параметров, откроется мастер, который проведет вас через него. Обратите внимание, что с помощью мастера вы получаете поддержку всех функций поставщика членства (профили, персонализация, веб-события ...), даже если вы не собираетесь их использовать.

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

При правильном запуске у вас должно быть несколько таблиц (не менее 6), хранимые процедуры (пару десятков или около того - у меня 35) и роли БД (минимум 6) с именами, начинающимися с aspnet_, и группа представлений (не менее 5) с именами, начинающимися с vw_aspnet_. Если вам не хватает какой-либо части из них, поставщик не будет работать.

Обычно я запускаю его из командной строки, чтобы получить только членство и роль. Это немного снизит уровень шума, но также и потому, что мои цифры немного размыты. :)

...