我正在开发 asp.net mvc2 应用程序,我使用使用 ASPNETDB.mdf 数据库的 asp.net 会员提供程序。我也有自己的数据库,现在我想知道如何将这两个数据库上传到服务器?我应该将它们作为 .mdf 文件上传还是应该使用 SQL 服务器?我更喜欢使用 SQL 服务器,如果有人知道转换和上传这两个数据库的最短方法,那将对我有很大帮助。
提前致谢,
伊利亚
我正在开发 asp.net mvc2 应用程序,我使用使用 ASPNETDB.mdf 数据库的 asp.net 会员提供程序。我也有自己的数据库,现在我想知道如何将这两个数据库上传到服务器?我应该将它们作为 .mdf 文件上传还是应该使用 SQL 服务器?我更喜欢使用 SQL 服务器,如果有人知道转换和上传这两个数据库的最短方法,那将对我有很大帮助。
提前致谢,
伊利亚
有趣的是,我刚刚完成了同样的事情。基本步骤如下:
首先是会员提供者:
<membership> <providers> <clear/> <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a " connectionStringName="ConnectionStringLoginInfo" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordStrengthRegularExpression="" applicationName="/" /> </providers> </membership>
现在角色提供者:
<roleManager enabled="true"> <providers> <clear/> <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a " connectionStringName="ConnectionStringLoginInfo" applicationName="/" /> </providers> </roleManager>
最后是 WebPart 提供程序,如果您使用它:
<webParts> <personalization defaultProvider="SqlDatabaseProviderDRDBLoginInfo"> <providers> <clear/> <add connectionStringName="ConnectionStringLoginInfo" type="System.Web.UI.WebControls.WebParts.SqlPersonalizationProvider" name="SqlDatabaseProviderDRDBLoginInfo"/> </providers> </personalization> </webParts>
在此示例中,我调用了连接字符串ConnectionStringLoginInfo
,但无论您如何命名,请确保将其设置在连接字符串部分。也不会粘贴那个:)
这一切都比我想说的要多得多,但是当我看到我的应用程序在 App_Data 文件夹被删除的情况下完美运行时,那是相当不错的时刻!
作为对 Blindy 回答的补充,我想提一下配置提供程序的另一种方法是更改大多数提供程序使用的默认 ConnectionString 的连接字符串设置,即 LocalSqlServer。为此,您只需覆盖 web.config 中的特定 ConnectionString ,如下所示:
<connectionStrings>
<clear />
<add name="LocalSqlServer" connectionString="change this to be the details of your host database" providerName="System.Data.SqlClient" />
</connectionStrings>
此外,如果您不想清除整个 connectionStrings 部分,您可以像这样删除特定的连接字符串:
<connectionStrings>
<remove name="LocalSqlServer" />
<add name="LocalSqlServer" connectionString="change this to be the details of your host database" providerName="System.Data.SqlClient" />
</connectionStrings>
这是可行的,因为所有默认使用 Sql Server 作为其数据存储的提供程序(例如成员资格提供程序)默认使用“LocalSqlServer”连接字符串。因此,如果您覆盖它,您不必更改每个提供程序以指向不同的连接字符串。
此外,出于安全原因,您可能需要考虑加密 web.config 文件的 connectionString 部分。以下两篇文章提供了更多信息。
对于托管解决方案(即您的托管计划不是虚拟专用服务器),您最简单的选择是生成数据库的 SQL 脚本,将这些脚本导出到 *.sql 文件,然后在托管的 SQL 连接中运行它们。
我通常会使用 SQL Server Management Studio 连接到我的 Web 主机的 SQL 实例,然后打开或粘贴由我的本地副本生成的脚本。
根据您的 Web 主机是否提供该服务,您还可以在 Visual Studio 中使用“发布到提供者...”选项。