Итак, я преобразовываю приложение из встроенной системы безопасности в проверку подлинности с помощью встроенного поставщика членства и веду себя наиболее странно. Изначально я использовал конфигурацию sqlexpress по умолчанию, где она создает файл aspnetdb.mdf в папке App_Data.
Однако я хотел перенести это на свой SQL Server и сделал это, создав процедуры и таблицы в базе данных SQL Server, и указал своему провайдеру на эту базу данных. И все же, когда я запускаю инструмент администрирования веб-сайта, он не будет смотреть на SQL Server.
Он продолжает создавать файл aspnetdb.mdf и использовать его, несмотря на то, что мое приложение, похоже, правильно работает с базой данных SQL. Наконец, я отключил службу SQLEXPRESS, и теперь происходит действительно странный бит.
Логин работает нормально - Membership.Provider.ValidateUser(LoginUser.UserName, LoginUser.Password)
возвращает true. Тем не менее, когда выполняется вызов IsInRole
, он не может подключиться к базе данных. Очевидно, он пытается подключиться к базе данных SQLEXPRESS. Я перезапустил IIS, перезапустил службу базы данных безрезультатно.
Разве это не подходящее место, чтобы сообщить службе членства, какую базу данных следует использовать:
<connectionStrings>
<add name="MyConnection" connectionString="user id=myuser;password=mypassword;data source=SERVER\INSTANCE;initial catalog=mycatalog;"/>
</connectionStrings>
<system.web>
<authentication mode="Forms">
<forms name="formsauth" protection="None" path="/" loginUrl="~/Account/Login.aspx" cookieless="UseCookies"/>
</authentication>
<roleManager enabled="true" />
<membership>
<providers>
<remove name="AspNetSqlMembershipProvider"/>
<add name="AspNetSqlMembershipProvider"
type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="MyConnection"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="false"
applicationName="/MyApp"
requiresUniqueEmail="false"
minRequiredPasswordLength="6"
minRequiredNonalphanumericCharacters="0"
passwordFormat="Hashed"
maxInvalidPasswordAttempts="5"
passwordAttemptWindow="10"
passwordStrengthRegularExpression=""
/>
</providers>