我对ASP.NET开发很新。 我试图了解在将SQL Server数据库部署到生产环境中时配置连接字符串的“常用”方法是什么。我了解到在开发和生产之间使用不同的连接字符串是正常的,例如here所述。
我正在开发一个将在Intranet上运行的小型ASP.NET应用程序;我将无法访问生产服务器。 现在,我的问题是:如何让“最终”用户配置正确的连接字符串?我知道我的应用程序将由公司的IT人员安装,但是如何?
答案 0 :(得分:1)
这取决于您希望最终用户拥有的体验。最简单的就是让他们编辑web.config(通过记事本或通过IIS)(你知道IIS为你的web.config提供了一个编辑器,特别是连接字符串,对吗?)
但最佳用户体验(imo)是指您的安装程序可以通过一系列问题构建连接字符串。如果他们需要在事后进行更改,他们可以手动编辑或通过IIS进行编辑。
答案 1 :(得分:1)
您可以自动执行此操作,因为他们已经使用Web.config转换知道连接字符串。我们的想法是,他们提供连接字符串,您在web.deploymentname.config中进行设置,当您发布/创建网站包时,连接字符串的值将自动更改。
这个答案描述了如何做到这一点: https://stackoverflow.com/a/19356284/375304
如果您不知道连接字符串,则另一种解决方案是使用Web Deploy Tool。这允许提供简单的,逐步的UI,其中(除其他之外)设置连接字符串的可能性。它还使您的网站打包更容易。有关详细信息,请查看以下链接中的视频:
http://www.iis.net/downloads/microsoft/web-deploy
但是,请注意,必须首先在IIS服务器上安装Web部署工具(使用Web平台安装程序非常容易)(无论如何,这都非常方便,您应该拥有它)。
答案 2 :(得分:0)
以下是我将如何做的一个实例......
编辑我的Web.Config文件
注意:名称:DefaultConnection,LocalConnection,livedbsource,localdbsource,localMachineName
<connectionStrings>
<!--Live-->
<add name="DefaultConnection" connectionString="Data Source=livedbsource;Initial Catalog=livedbname;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False;MultipleActiveResultSets=true;" providerName="System.Data.SqlClient" />
<!--Dev-->
<add name="LocalConnection" connectionString="Data Source=localdbsource;Initial Catalog=localdbname;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False;MultipleActiveResultSets=true;" providerName="System.Data.SqlClient" />
</connectionStrings>
对于ApplicationDbContext
static string ServerName = System.Net.Dns.GetHostName();
//setting what connection string to use - tenary operator
static string ConnectionStringID = (ServerName == "localMachineName") ? "LocalConnection" : "DefaultConnection";
public ApplicationDbContext()
: base(ConnectionStringID, throwIfV1Schema: false)
{
}
在Windows 7及更高版本上,您可以按Windows徽标并搜索系统信息获取localMachineName,然后查找“系统名称”
以下是我在Visual Studio 2017中在直播项目中完成的YouTube视频,它运行良好。