首页 文章

在 生产环境 中编辑web.config连接字符串

提问于
浏览
1

我试图了解在将SQL Server数据库部署到 生产环境 环境中时配置连接字符串的方式是什么"usual" . 我了解到在开发和 生产环境 之间使用不同的连接字符串是正常的,例如here .

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

  • 他们应该编辑我的web.config文件吗?

  • 我应该提供"configuration"页面,用户要写入连接字符串吗? (在这种情况下:我应该以编程方式自己编写web.config文件吗?)

3 回答

  • 1

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

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

  • 1

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

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

    如果您不知道连接字符串,另一种解决方案是使用Web Deploy Tool . 这允许提供简单的,逐步的UI,其中(除其他之外)设置连接字符串的可能性 . 它还使您的网站打包更容易 . 有关详细信息,请查看以下链接中的视频:
    http://www.iis.net/downloads/microsoft/web-deploy

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

  • 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视频,它的工作原理 .

    https://youtu.be/oKg6ewKhkYs

相关问题