【问题标题】:Web Administration Tool database with IIS带有 IIS 的 Web 管理工具数据库
【发布时间】:2012-08-14 17:42:54
【问题描述】:
我为我的大学创建了一个需要会员资格的网站。
我使用了 Visual Studio 中的 Web 管理工具并创建了用户和规则。当我从 Visual Studio 中对其进行测试时,它工作正常。
Web 管理工具会在保存成员数据的 App_Data 文件夹中自动创建一个名为 ASPNETDB.MDF 的 SQL 数据库。
我的问题是当我在 IIS 中添加网站时数据库会工作吗?我必须创建一个 sql server 数据库并添加一个连接吗?请回答我。这真的很重要。
我只想要一个非常基本的会员资格。
【问题讨论】:
标签:
asp.net
visual-studio-2010
iis
asp.net-membership
web-administration
【解决方案1】:
您可以使用 /App_Data 中的 db,如此 SO 答案中所述:
ASP.NET: How to deploy App_Data to webhost? - 但这取决于您的服务器设置。
当使用 Membership 时,我的偏好是在 SQL / SQL Express 中从单独的数据库运行它,因为如果需要,可以选择在不同的服务器上运行 IIS 站点和数据库。也更适合安全/扩展等。
创建数据库后,您可以使用 aspnet_regsql.exe 将会员服务安装到数据库中。它通常位于此处 - c:\Windows\Microsoft.NET\Framework\\aspnet_regsql.exe。可作为 GUI 或命令行运行:
http://msdn.microsoft.com/en-us/library/x28wfk74.aspx
从单独的数据库运行会员资格时,您还需要在 web.config 中配置提供程序。类似这样的东西:
<connectionStrings>
<remove name="LocalSqlServer" />
<add name="MyMembershipConnectionString"
connectionString="Data Source=SERVER123\SQLEXPRESS;Initial Catalog=Database123;Persist Security Info=True;User ID=User123;Password=Password123" providerName="System.Data.SqlClient" />
</connectionStrings>
在 部分:
<roleManager defaultProvider="MySqlRoleProvider" enabled="true"
cacheRolesInCookie="true" cookieName=".ASPROLES" cookieTimeout="30"
cookiePath="/" cookieRequireSSL="false" cookieSlidingExpiration="true" cookieProtection="All">
<providers>
<clear />
<add name="MySqlRoleProvider" type="System.Web.Security.SqlRoleProvider"
connectionStringName="MyMembershipConnectionString" applicationName="MyAppName" />
</providers>
</roleManager>
<membership defaultProvider="MySqlMembershipProvider" userIsOnlineTimeWindow="720">
<providers>
<clear />
<add name="MySqlMembershipProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="MyMembershipConnectionString"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="false"
requiresUniqueEmail="true"
passwordFormat="Hashed"
minRequiredPasswordLength="8"
minRequiredNonalphanumericCharacters="0"
passwordStrengthRegularExpression="((?=.*\d)(?=.*[a-z]).{6,20})"
maxInvalidPasswordAttempts="5"
passwordAttemptWindow="30" />
</providers>
</membership>
我已经多次使用类似的设置,没有任何问题。
如果使用 /App_Data 中的 db,则无需执行任何 web.config 操作