Re: Как заставить RoleManager лезть в нужную мне БД?
От: maden Россия  
Дата: 22.03.07 05:20
Оценка:
Здравствуйте, _Budda_, Вы писали:

_B_>Вот содержимое моего xml-файла:

_B_>

_B_><configuration>
_B_> <connectionStrings>
_B_> <add name="SqlConnectionMain" connectionString="Data Source=BUDDA-2003E\sqlexpress;Initial Catalog=vfm_elita_bn;Integrated Security=True" providerName="System.Data.SqlClient" />
_B_> </connectionStrings>
_B_> <system.web>
_B_> <authentication mode="Forms">
_B_> </authentication>
_B_> <membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="15">
_B_> <providers>
_B_> <clear/>
_B_> <add name="SqlProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="SqlConnectionMain" applicationName="MembershipSample" enablePasswordRetrieval="false" enablePasswordReset="false"
_B_> requiresQuestionAndAnswer="false" passwordFormat="Hashed"
_B_> minRequiredPasswordLength="3" minRequiredNonalphanumericCharacters="0" />
_B_> </providers>
_B_> </membership>
_B_> </system.web>
_B_></configuration>

_B_>Этого мало? ПОдскажите, плиз, почему при вызове:

_B_>
_B_>if (!Roles.RoleExists("user"))
_B_>                Roles.CreateRole("user");
_B_>

_B_>Идёт обращение не к мое БД, которая подключается при помощи SqlConnectionMain, а куда-то в системные базы...

Вся проблема в том, что указан стандартный провайдер Membership, который указывается в type="System.Web.Security.SqlMembershipProvider", он и определяет в какие таблицы писать и как организованы стандартные функции, предоставляемые механизмом Mebership (как писать свои провайдеры можно посмотреть в книге Professional ASP.NET 2.0 Security, Membership, and Role Management by Stefan Schackow), вы лишь поменяли строу коннекта к базе данных
Настоящий инжинер не тот, кто все знает, а тот кто знает
где <b><a href="http://msdn2.microsoft.com">посмотреть</a></b> (или у кого <b><a href="http://www.google.ru">спросить</a></b>)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.