1

我一直把头撞在墙上,我认为这是一项非常简单的任务。

快速背景:

  1. 我正在使用 IIS7 的 URL 重写
  2. 我正在使用重写映射来映射/ErrorPage.aspx/Error(以及许多其他)。
  3. 我将<customErrors>配置元素设置为“开”(在本地测试)并defaultRedirect设置为“~/ErrorPage.aspx”。
  4. 框架 3.5

我的问题有两个:

  1. /Error即使网站上的所有其他重写都在工作,重写也不起作用。
  2. 发生异常时,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>

我觉得我一定错过了一些非常简单和基本的东西。

4

0 回答 0