1

我对 ASP.NET 开发很陌生。我试图了解在将 SQL Server 数据库部署到生产环境时配置连接字符串的“通常”方式是什么。我了解到,在开发和生产之间有不同的连接字符串是正常的,例如这里提到的。

我正在开发一个将在 Intranet 上运行的小型 ASP.NET 应用程序;我将无法访问生产服务器。现在,我的问题是:如何让“最终”用户配置正确的连接字符串?我知道我的应用程序将由公司的 IT 人员安装,但如何安装?

  • 他们应该编辑我的 web.config 文件吗?
  • 我应该提供一个“配置”页面,用户将在其中编写连接字符串吗?(在这种情况下:我应该以编程方式自己编写 web.config 文件吗?)
4

3 回答 3

1

这取决于您希望最终用户拥有的体验。最简单的就是让他们编辑 web.config(通过记事本或通过 IIS)(您知道 IIS 为您的 web.config 提供了一个编辑器,并且专门用于连接字符串,对吧?)

但最好的用户体验 (imo) 是您的安装程序是否可以通过一系列问题构建连接字符串。如果他们事后需要更改它,他们可以手动或通过 IIS 进行编辑。

于 2013-10-14T15:06:57.337 回答
1

您可以自动执行此操作,因为他们已经使用 Web.config 转换知道连接字符串。这个想法是他们提供连接字符串,您在 web.deploymentname.config 中设置它,当您发布/创建网站包时,连接字符串的值将自动更改。

这个答案描述了如何做到这一点: https ://stackoverflow.com/a/19356284/375304

如果您不知道连接字符串,另一种解决方案是使用 Web 部署工具。这允许提供一个简单的、基于分步的 UI,并且(除其他外)可以设置连接字符串。它还使打包您的网站以进行部署更加容易。请查看以下链接中的视频以获取更多信息:
http ://www.iis.net/downloads/microsoft/web-deploy

但是,请注意必须首先使用 Web 平台安装程序将 Web 部署工具安装在 IIS 服务器上(尽管它很容易设置)(无论如何它非常方便,您应该拥有它)。

于 2013-10-15T09:59:25.097 回答
0

这是我将如何做的一个例子......

编辑我的 Web.Config 文件
注意:名称:DefaultConnection、LocalConnection、livebsource、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 视频,它有效。

https://youtu.be/oKg6ewKhkYs

于 2018-04-22T00:41:30.857 回答