【问题标题】:Changing customErrors in web.config semi-dynamically半动态更改 web.config 中的 customErrors
【发布时间】:2010-05-24 19:10:04
【问题描述】:

基本思想是我们有一个模拟生产环境的测试环境,因此 customErrors="RemoteOnly"。我们刚刚构建了一个针对测试环境运行并检测中断的测试工具。我们希望它能够撤回详细的错误。但我们不想打开 customErrors="On",因为那样它就不会模仿生产。

我环顾四周,想了很多,但我想出的一切都是不可能的。我对这些观点有误吗?

  • 我们无法在运行时打开 customErrors,因为当您调用 configuration.Save() 时 - 它会将 web.config 写入磁盘,现在每个请求都关闭。
  • 我们无法使用自己的 web.config 将文件符号链接到新的顶级目录,因为我们在 windows 上,而 windows 上的 subversion 不做符号链接。
  • 我们不能使用 URL-Mapping 创建一个空文件夹 dir2 和它自己的 web.config 并让 dir1 中的文件看起来在 dir2 - web.config 不适用
  • 我们无法使用自己的 web.config 将所有 aspx 文件复制到 dir2 中,因为没有一个链接是一致的,这是一个可怕的 hacky 解决方案。
  • 我们无法根据主机名更改 web.config 中的 customErrors(例如,向测试服务器添加另一个 dns 条目),因为这是不可能的/不支持的
  • 我们不能做任何虚拟目录的恶作剧来让它发挥作用。

如果我不是,有没有办法完成我想做的事情?在某些情况下(dns 名称甚至查询字符串值)打开 customErrors 站点范围?

【问题讨论】:

    标签: asp.net iis web-config custom-errors


    【解决方案1】:

    如果您有 customErrors="On" 或 "remoteOnly",错误详细信息不会消失,对吗?我的意思是您仍然可以使用您的自定义错误页面访问它并将其记录到另一个来源。

    您为什么不在生产日志中将您的自定义错误页面包含在您的工具可以访问的地方,例如消息队列或应用程序事件日志?当安全带遇到中断时,它必须足够聪明,以便在正确的位置查找完整的错误信息。

    无论如何都要考虑另一件事。

    【讨论】:

    • 这就是我们现在整合的 hack,让我们在 50% 的时间里完成了 60% 的工作。但是我们使用 nUnitASP 作为工具,它可以很好地解析死亡黄页,为您提供错误详细信息。我希望重新获得它。
    猜你喜欢
    • 1970-01-01
    • 2013-05-09
    • 2011-11-08
    • 1970-01-01
    • 2017-03-16
    • 2016-05-24
    • 1970-01-01
    • 2010-11-30
    相关资源
    最近更新 更多