.Net defaultRedirect到特定于语言环境的错误页面

时间:2010-09-30 23:40:25

标签: .net asp.net redirect localization globalization

我有一个ASP.Net webforms应用程序,它使用.Net全球化功能在不同的语言环境中提供.aspx页面。我将自定义错误定义为

 <customErrors mode="RemoteOnly" defaultRedirect="Error.htm">

我更喜欢使用default.Net页面作为defaultRedirect来防止无限循环的可能性,以防错误页面本身产生错误,所以我已经针对静态.htm页面。但是,我想在用户最初请求的区域设置中呈现该页面,其中区域设置是从查询字符串中确定的。

实现这一目标的最佳方法是什么?

我考虑过这些选项,但我对其他选项感兴趣:

  • 重定向到其他可以运行服务器端逻辑的应用程序/域,以重定向或呈现特定于语言环境的响应(看起来有点矫枉过正)
  • 使用客户端代码(JavaScript)呈现特定于语言环境的内容(但对于禁用JavaScript的浏览器不起作用,我希望它也适用于这些用户)。
  • 使静态错误页面以多种语言显示文本 - 在一个页面上显示所有语言文本(我更喜欢只显示一个语言环境中的文本)

3 个答案:

答案 0 :(得分:1)

如果您的项目文件结构具有特定于语言的文件夹,则一种解决方案是使用每个语言文件夹中指定的<customErrors />部分创建 web.config

示例项目结构

  • App_Code文件
  • ...
  • EN-US
    • ...
    • 的web.config
  • 烯GB
    • ...
    • 的web.config
  • ZH-CN
    • ...
    • 的web.config
  • ...
  • Default.aspx的
  • 的web.config

答案 1 :(得分:0)

如果您可以为错误信息创建动态页面,关注本地化和其他事情,我认为这是最好的方法。

您可以处理 global.asax 上的错误我们开发您自己的 httpmodule (两种方式都有效)您可以通过一种伟大而动态的方式管理应用程序错误,控制所有过程。

包括确定当前的laguage以决定可能的重定向,或者例如显示有关不同类型错误的不同消息。

在我看来,我开始用解决方案来解决问题,该解决方案可以灵活地决定我如何处理不同的案例。

答案 2 :(得分:0)

我的结论是,最佳做法是一般遵循以下问题的答案中概述的方法,只转移到.htm页面而不是.aspx页面:

ASP.NET 2.0 : Best Practice for writing Error Page