2012-09-27 42 views
2

我一直在经历堆栈溢出,但无法找到答案。我可以得到500页就OK出现这样的:在mvc3中本地化错误500页

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

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

有什么想法?

+0

你这样做通过Application_Error – VJAI

+0

不,我不能...或者至少,我可以,但我想避免任何涉及C#代码,并知道是否有可能从web.config解决 – Tallmaris

回答

0

这只是我的头顶,不能使用URL重写/重定向规则,它使用浏览器定义的Accept-Language重定向到〜/ 500.en-us.html和〜/ 500 .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 /重定向规则会的工作,因为它是IIS的程序处理该请求,而不是应用程序代码的一部分。因此,理论上,如果WebApp由于某种原因而中断,它仍然可以工作。虽然我的假设可能完全错误,但我认为我会诚实地对待它。