在web.config中有没有办法指定特定于机器的值?例如:在生产中我希望<customErrors>
节点重定向到特定页面以显示用户友好的错误处理页面,但在开发,测试和暂存中,我想要<customErrors mode="Off" />
所以我可以看到尽可能详细。
这目前可能吗?
答案 0 :(得分:2)
使用ASP.NET 2及更高版本,许多配置元素现在支持“configSource”属性,允许您用外部文件替换该部分的内容。这可以允许您在主web.config中进行常规设置,然后为您知道将根据环境更改的部分分隔文件。
正如Nathan所指出的那样,在这种情况下你可以使用RemoteOnly模式,当你在“localhost”上浏览网站时会显示完整的错误 - 如果你没有在LocalHost上开发那么这就赢了“帮你。
VS2010将添加一个新功能,您可以根据构建目标修改配置文件,因此版本或生产版本可以自动将其设置为“开启”,而调试或暂存可能会将此设置为“关闭”。 / p>
另一种选择是挂钩global.asax中的Application_Error事件,如果用户以某种管理员身份登录,则输出堆栈跟踪,否则显示错误页面。
答案 1 :(得分:1)
我正在写并接受我自己的回答,因为我问这个问题没有答案。对于路径:
C:\inetput\wwwroot
wwwroot是相对root的,我的目标是将<customErrors>
的机器特定指令放在inetpub
目录中,以便XCopying新代码自动在外部配置文件中选择已建立的机器设置。也许可以通过编辑machine.config文件来做到这一点,但是这个解决方案太低了(在服务器管理员执行此操作之前需要管理员在纸上签名)。
所以我只是坚持编辑开发,测试和登台服务器的web.config文件的现状。
答案 2 :(得分:0)
<customErrors mode="RemoteOnly">
会为你做到这一点。
答案 3 :(得分:0)
如果你做
<customErrors mode="RemoteOnly">
然后您将在Web服务器计算机上看到详细的错误消息,但在所有远程计算机中都会看到友好的错误消息(您需要在web.config中指定)。
答案 4 :(得分:0)
这不是.config文件的用途吗?针对不同环境的不同配置?对于网站,我们总是为每个环境提供不同的web.configs(引用不同的连接字符串等等)。但Nathan Taylors的答案对于您的具体问题是正确的。