私は、非常に単純な作業と思われる作業に頭を悩ませてきました。
簡単な背景:
- IIS7 で URL 書き換えを使用しています
- 私は(他の多くの中で)マップ
/ErrorPage.aspx
するために書き換えマップを使用しています。/Error
- config 要素を
<customErrors>
"On" (ローカルでテストするため) にdefaultRedirect
設定し、"~/ErrorPage.aspx" に設定しました。 - フレームワーク 3.5
私の問題は 2 つあります。
/Error
サイト上の他のすべての書き換えが機能しているにもかかわらず、への書き換えが機能していません。- 例外が発生すると、URL に が表示されます
/ErrorPage.aspx?aspxerrorpath=/Blah
。
詳細な例外メッセージを十分にキャッチしているため、エラーパスは気にしません。
にクエリ文字列を追加すると aspxerrorpath が削除されるという別のオーバーフロー投稿を読みましたが (実際には削除されました)、実際の書き換えはまだ行われていません。defaultRedirect
単純に書き換えたりリダイレクトしたりして/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>
しかし、残念ながら、どちらも機能していません。
ただし、書き換えマップと一緒に config 要素PageNotFound.aspx
を使用して、404 書き換えを実装することができました。<httpErrors>
に正しく書き換え/PageNotFound
ます。 すべての例外の ErrorPage に対してこれを行う方法はありますか?
<httpErrors errorMode="Custom">
<clear />
<error statusCode="404" responseMode="Redirect" path="PageNotFound" />
</httpErrors>
とてもシンプルで基本的な何かが欠けているに違いないと感じています。