我一直把头撞在墙上,我认为这是一项非常简单的任务。
快速背景:
- 我正在使用 IIS7 的 URL 重写
- 我正在使用重写映射来映射
/ErrorPage.aspx
到/Error
(以及许多其他)。 - 我将
<customErrors>
配置元素设置为“开”(在本地测试)并defaultRedirect
设置为“~/ErrorPage.aspx”。 - 框架 3.5
我的问题有两个:
/Error
即使网站上的所有其他重写都在工作,重写也不起作用。- 发生异常时,URL 显示
/ErrorPage.aspx?aspxerrorpath=/Blah
.
我不关心错误路径,因为我已经充分捕获了详细的异常消息。
我在另一个溢出帖子中读到,将查询字符串添加到defaultRedirect
将摆脱 aspxerrorpath(它确实如此),但实际的重写仍然没有发生。
有没有办法简单地重写或重定向到/Error
并实际显示我的错误页面?
我尝试创建一个重写规则来摆脱 aspxerrorpath,但它从未成功。
<rule name="RewriteUserFriendlyURL3" stopProcessing="true">
<match url="^([^/]+)/?$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Redirect" url="ErrorPage.aspx?aspxerrorpath={R:1}" />
</rule>
然后我在将查询字符串附加到时尝试了一个单独的defaultRedirect
:
<rule name="RewriteUserFriendlyURL3" stopProcessing="true">
<match url="^([^/]+)/([^/]+)/?$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="ErrorPage.aspx?{R:1}={R:2}" />
</rule>
但是,唉,两者都不起作用。
但是,我能够PageNotFound.aspx
使用<httpErrors>
config 元素和我的 Rewrite Map 实现 404 重写。它正确地重写为/PageNotFound
. 有没有办法针对所有异常对 ErrorPage 执行此操作?
<httpErrors errorMode="Custom">
<clear />
<error statusCode="404" responseMode="Redirect" path="PageNotFound" />
</httpErrors>
我觉得我一定错过了一些非常简单和基本的东西。