C# 如何从asp.net应用程序的部署中检测开发环境

C# 如何从asp.net应用程序的部署中检测开发环境,c#,asp.net,C#,Asp.net,可能重复: 我在web.config中使用两个条目作为连接字符串,在部署和开发环境之间使用HttpContext.Current.Request.UserHostAddress进行检测: public static SqlConnection GetSqlConnection() { if (HttpContext.Current.Request.UserHostAddress != "127.0.0.1") ... else ... } 但问题就在这里,有时

可能重复:

我在web.config中使用两个条目作为连接字符串,在部署和开发环境之间使用HttpContext.Current.Request.UserHostAddress进行检测:

public static SqlConnection GetSqlConnection()
{
    if (HttpContext.Current.Request.UserHostAddress != "127.0.0.1")
    ...
    else
    ...
}
但问题就在这里,有时HttpContext.Current为null并引发异常(即:当计划任务从global.asax在asp.net中运行时)。
有什么通用解决方案吗?

您应该在环境之间更改配置文件中的连接字符串。这就是为什么它们首先存储在配置文件中,所以您不必这样做


我更喜欢将连接字符串放在一个单独的文件中,而不是部署它。对于其他特定于环境的配置也可以这样做。另一种方法是使用XML转换作为构建作业的一部分,在部署到生产环境时更改连接字符串。

您应该在环境之间的配置文件中更改连接字符串。这就是为什么它们首先存储在配置文件中,所以您不必这样做


我更喜欢将连接字符串放在一个单独的文件中,而不是部署它。对于其他特定于环境的配置也可以这样做。另一种方法是使用XML转换作为构建作业的一部分,以便在部署到生产环境中时更改连接字符串。

IsLocal是一种请求方法,有时请求为null。以上不是完美的解决方案。Local是一种请求方法,有时请求为空。以上不是完美的解决方案,但当我们在web.config中存储连接字符串时,我们可以使用.net framework中定义的方法来读取连接字符串。嗯?这不正是配置文件的用途吗?阅读?不,但如果存在web.config的任何解决方案,最好是使用您的解决方案。如果没有其他解决方案,您的解决方案就是好的。@mm暂时的:我还是不明白您想问什么。您是否询问是否可以将连接字符串放在单独的文件中,并且仍然使用
ConfigurationManager
等来读取它们?如果是,答案是肯定的。谷歌提供标准的
configSource
属性。谢谢Matti,使用configSource很好。但是当我们在web.config中存储连接字符串时,我们可以使用.net framework中定义的方法来读取连接字符串。哈?这不正是配置文件的用途吗?阅读?不,但如果存在web.config的任何解决方案,最好是使用您的解决方案。如果没有其他解决方案,您的解决方案就是好的。@mm暂时的:我还是不明白您想问什么。您是否询问是否可以将连接字符串放在单独的文件中,并且仍然使用
ConfigurationManager
等来读取它们?如果是,答案是肯定的。谷歌提供标准的
configSource
属性。谢谢Matti,使用configSource很好