我正在开发asp.net mvc2应用程序,我使用asp.net成员资格提供程序,它使用ASPNETDB.mdf数据库。我也有自己的数据库,现在我想知道如何将这2个数据库上传到服务器?我应该将它们上传为.mdf文件还是应该使用SQL服务器?我更喜欢使用SQL服务器,如果有人知道转换和上传这两个数据库的最短路径,那将对我有所帮助。
提前致谢,
伊利亚·
答案 0 :(得分:6)
有趣的是我刚刚完成同样的事情。基本步骤如下:
首先是会员提供者:
<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文件夹时完美运行时,那就是当下!
答案 1 :(得分:1)
托管解决方案的最简单选项(即您的托管计划不是虚拟专用服务器)是生成数据库的SQL脚本,将这些脚本导出到* .sql文件,然后在托管SQL连接中运行它们。
我通常会使用SQL Server Management Studio连接到我的Web主机的SQL实例,并打开或粘贴我本地副本生成的脚本。
根据您的网站托管服务商是否提供该服务,您也可以使用Visual Studio中的“发布到提供商...”选项。
答案 2 :(得分:1)
作为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部分。以下两篇文章提供了更多信息。
Encrypting and Decrypting Configuration Sections
How To: Encrypt Configuration Sections in ASP.NET 2.0 Using RSA