在运行时将值替换到 web.config 中

发布于 2024-11-09 14:03:52 字数 179 浏览 3 评论 0原文

我们有一个在三个环境中运行的应用程序:开发、QA 和生产。该应用程序访问 SQL 服务器和多个 Web 服务。 web.config 文件包含 SQL 服务器的连接字符串和 Web 服务的 IP 地址。我们希望能够拥有一个适用于所有三种环境的 web.config 文件,但以某种方式为每种环境获取不同的数据。有谁知道有什么方法可以做到这一点?

We have an application that runs in three environments: development, QA, and production. The application accesses an SQL server and several web services. The web.config file has the connection string for the SQL server and the IP addresses of the web services. We would like to be able to have one web.config file that works in all three environments, but somehow picks up the varying data for each environment. Does anyone know of a way to do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

唠甜嗑 2024-11-16 14:03:52

我们使用与您完全相同的配置选项,并且我们在 web.config 中创建了 3 个连接字符串,如下所示:

<connectionStrings>
    <add name="Dev" connectionString="Server=localhost;Database=WebDev;User=devo;Pwd=xxxxx;" providerName="System.Data.SqlClient"/>
    <add name="Stage" connectionString="Server=localhost;Database=WebStage;User=stago;Pwd=xxxxx;" providerName="System.Data.SqlClient"/>
    <add name="Live" connectionString="Server=localhost;Database=WebLive;User=livo;Pwd=xxxxx;" providerName="System.Data.SqlClient"/>
</connectionStrings>

然后我们有一个静态方法,它基于 url 来确定要使用哪个 conn str:

public static string ConnStr
{
    get
    {
        if (Config.WebRoot.StartsWith("http://www.")) { return ConfigurationManager.ConnectionStrings["Live"].ToString(); }
        else if (Config.WebRoot.StartsWith("http://stage.")) { return ConfigurationManager.ConnectionStrings["Stage"].ToString(); }
        else if (Config.WebRoot.StartsWith("http://localhost")) { return ConfigurationManager.ConnectionStrings["Dev"].ToString(); }
        else { return null; }
    }
}

您可能需要调整对您有用的方法。

We use the exact same config options as you, and we have created 3 connection strings in our web.config like this:

<connectionStrings>
    <add name="Dev" connectionString="Server=localhost;Database=WebDev;User=devo;Pwd=xxxxx;" providerName="System.Data.SqlClient"/>
    <add name="Stage" connectionString="Server=localhost;Database=WebStage;User=stago;Pwd=xxxxx;" providerName="System.Data.SqlClient"/>
    <add name="Live" connectionString="Server=localhost;Database=WebLive;User=livo;Pwd=xxxxx;" providerName="System.Data.SqlClient"/>
</connectionStrings>

Then we have a static method that bases itself on the url to determine which conn str to use:

public static string ConnStr
{
    get
    {
        if (Config.WebRoot.StartsWith("http://www.")) { return ConfigurationManager.ConnectionStrings["Live"].ToString(); }
        else if (Config.WebRoot.StartsWith("http://stage.")) { return ConfigurationManager.ConnectionStrings["Stage"].ToString(); }
        else if (Config.WebRoot.StartsWith("http://localhost")) { return ConfigurationManager.ConnectionStrings["Dev"].ToString(); }
        else { return null; }
    }
}

You may have to adjust the method to work for you.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文