根据URL分配web.config设置

时间:2014-07-15 11:04:08

标签: c# asp.net

我有一个在开发服务器和prod服务器上运行的asp.net/c# 网站。我们在两台服务器之间保持相同的代码。是否可以根据URL在web.config中分配不同的设置(例如,对于错误页面等)

理想情况下,我想在web.config中使用IF语句,例如

if (url.contains "http://dev") {
            web.config += @'<customErrors mode="Off" />'
} else {
            web.config += @'<customErrors mode="On" defaultRedirect="~/web/error.aspx" />'
}

1 个答案:

答案 0 :(得分:0)

应用程序配置文件没有直接模板或脚本支持,因此问题中概述的方法是不可能的。作为构建过程的一部分,可以更好地为每个环境构建配置文件。

如果您使用的是Visual Studio 2012+(或2010使用Visual Studio Web发布更新),则可以使用web.config转换来管理整个环境中的差异配置。

根据使用一些创造性思维的问题,这可以用于网站项目。例如。 http://andrewtwest.com/2010/02/25/using-web-config-transformations-in-web-site-projects/。虽然这涉及为配置管理创建单独的项目,但在IDE之外实现完整的构建过程却是一种相当简单的方法。

使用这种方法,您有一个主web.config,其中包含跨环境通用的基本配置。此外,每个构建配置都有一个web.config转换文件,该文件应用特定于该环境的转换。在您的情况下,这将是关闭开发中的customErrors。

此处提供了更多信息:http://msdn.microsoft.com/en-us/library/vstudio/dd465318(v=vs.100).aspx

但基本的想法是确保您拥有所需的所有构建配置,然后右键单击您的web.config并选择添加转换。然后,在使用相应的构建配置部署站点时应用这些。