【发布时间】:2011-12-12 03:09:44
【问题描述】:
因此,我正在使用内置的成员资格提供程序将应用程序从集成安全性转换为表单身份验证,并且具有最奇怪的行为。最初,我使用默认的 sqlexpress 配置,它会在您的 App_Data 文件夹中创建一个 aspnetdb.mdf 文件。
但是,我想将其移至我的 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>
【问题讨论】:
标签: asp.net asp.net-membership