0

我有一个在 iis 6 上运行的应用程序(带有应用程序池的文件夹),我在其中尝试设置自定义错误页面。我在网络配置中有一个自定义错误的元素,但它从未出现。如果我进入 IIS 并查看应用程序的属性,我可以设置自定义错误以指向 oops.html。似乎 IIS 没有使用我的 web.config 中的设置来处理错误。

这是我在 web.config 中的内容

<system.web>
    ...
    <customErrors mode="On" defaultRedirect="/oops.html" redirectMode="ResponseRewrite" />
    ...
</system.web>
<system.webServer>
    ...
    <httpErrors existingResponse="PassThrough" />
    ...
<system.webServer>

该应用程序的地址如下:www.mysite.com/myappfolder/

网络配置位于:www.mysite.com/myappfolder/

oops.html 位于:www.mysite.com/myappfolder/oops.html

如果它尝试访问:www.mysite.com/myappfolder/NothingReal 404 将被抛出,只有当我将 IIS 配置为重定向到 oops.html 时,我才会看到该页面。

指定自定义错误目标的规则是什么?我应该删除“/”吗?使用 ~/myappfolder/oops.html 怎么样?如何绕过 IIS 6 错误处理并将所有错误重定向到我的页面?


你试过使用~/oops.html吗?

4

3 回答 3

0

web.config 中的customErrors元素仅适用于 ASP.NET 运行时监视的资源。默认情况下,图像和 HTML 文件等静态资源由 IIS 处理,从不移交给 ASP.NET 运行时。

于 2011-10-24T20:14:33.140 回答
0

所以这是一个问题的组合。首先是服务器上有两个级别的错误处理。

第一级位于 IIS 中。当 IIS 遇到错误时,它将使用其错误页面来传递或掩盖问题。

第二个层次是在 ASP 运行时。如果页面中有错误,则脚本可以委托给“oops”页面,因为 Web 配置已配置为执行此操作。

如果 asp 没有重定向到“oops”页面或该页面的位置不正确,则 IIS 会处理该错误。在不重定向的情况下会抛出 500 级错误。如果“oops”页面的位置错误,则会抛出 404。

我的问题在于处理方式,IIS 和我的 web 配置指向同一个页面,这使得调试更具挑战性。

最后,我解决了我的问题,其中第一个问题是路径与处理重定向的 webconfig 相关,并且 ~/ 使用不正确。

于 2011-11-19T19:45:18.383 回答
0

你试过使用~/oops.html吗?

于 2011-10-24T18:07:53.350 回答