在mvc3中本地化错误500页

时间:2012-09-27 09:14:17

标签: asp.net-mvc-3 error-handling custom-error-pages

我一直在经历堆栈溢出但无法找到答案。我可以让500页显示如下:

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

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

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

这只是我的头脑,你不能使用URL重写/重定向规则,使用浏览器定义的重定向到〜/ 500.en-us.html和〜/ 500的Accept-Language。 de.html或者你可能有路径设置?

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由于某种原因被破坏,它仍然可以工作。我的假设可能完全错了,我认为我会给它一个诚实的镜头。