2

私はスタックオーバーフローを経験していますが、これに対する答えが見つかりません。次のように 500 ページを正常に表示できます。

<customErrors mode="On">
  <error statusCode="500"
         redirect="~/500.html"/>
</customErrors>

私がやりたいことは、アプリの言語に基づいてローカライズされたバージョンのページを表示することです。問題は、アプリに実際のエラー (DLL の欠落など) がある場合に備えて、他の多くの投稿で見つけた Error Controller-View ソリューションを実行したくないことです。したがって、純粋な html ページを提供する必要がありますが、ローカライズされたページを選択できるようにするか、IIS に検索方法を指示する必要があります。

何か案が?

4

1 に答える 1

0

これは頭​​の片隅にあるもので、ブラウザが ~/500.en-us.html および ~/500.de.html にリダイレクトするために定義する Accept-Language を使用する URL 書き換え/リダイレクト ルールを使用できませんでしたか?または、パス設定があるかもしれませんか?

web.config のルールの例:

<rule name="HTTP-Language-Error-Redirect" stopProcessing="true">
    <match url="^500.html$" />
    <conditions logicalGrouping="MatchAll" trackAllCaptures="true">
        <add input="{HTTP_ACCEPT_LANGUAGE}" pattern="^([a-z]{1,8}(-[a-z]{1,8})?)\s*(;\s*q\s*=\s*(1|0\.[0-9]+))?$" />
    </conditions>
    <action type="Redirect" url="500.{C:1}.html" redirectType="Found" />
</rule>

私の考えでは、redwrite/redirect ルールは、アプリケーション コードではなく、要求を処理する IIS のプロセスの一部であるため機能します。そのため、理論的には、WebApp が何らかの理由で壊れていても機能する可能性があります。しかし、私の仮定は完全に間違っている可能性があり、正直に考えてみようと思いました。

于 2012-11-21T20:58:47.773 に答える