2

我一直在经历堆栈溢出,但找不到答案。我可以像这样让 500 页面正常显示:

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

我想做的是根据应用语言呈现页面的本地化版本。问题是我不想通过我在许多其他帖子中找到的错误控制器视图解决方案,以防应用程序中存在实际错误(缺少 DLL 等)。所以我必须提供一个纯 html 页面,但我需要能够选择本地化的页面,或者指示 IIS 如何找到它。

任何想法?

4

1 回答 1

0

这只是我的想法,你不能使用使用浏览器定义的接受语言重定向到 ~/500.en-us.html 和 ~/500.de.html 的 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 回答