在`Global.asax`中使用`Response.Redirect()`是一个好习惯

时间:2014-11-25 06:05:10

标签: c# asp.net .net

我在Response.Redirect()

中使用 global.asax 时遇到运行时异常

结果:

HttpException:在此上下文中无响应。

我尝试过使用,

HttpContext.Current.Response.Redirect()

结果:

NullReferenceExeption:未将对象引用设置为对象的实例。


我知道Global.asax的基本目的是处理,

  1. 应用程序级别事件

  2. 会话级活动

  3. 但我的基本问题是,在Response.Redirect()文件中使用Global.asax是一种好习惯吗?

2 个答案:

答案 0 :(得分:4)

是的,您可以在Global.asax中使用Response.Redirect,假设您正在处理有请求的事件(例如开始请求)。

您绝对无法在应用程序级别事件期间使用Request,因为没有HttpRequest.Current可用。

请注意,虽然在Global.asax中使用此类代码没有什么特别的错误,但通常会将此类重定向代码放入模块中(即经常以HttpModule身份进行身份验证并且有大量重定向),Forms(WebForms)或控制器(MVC),动作属性(MVC)。

答案 1 :(得分:2)

特别是这不是好事或坏事。你究竟想做什么?您提供了一行代码而没有任何上下文。您是否尝试重定向某些类似this question或其他类似的请求?

您获得该异常的原因并不奇怪,因为代码在Begin_Request之前运行时没有可用的请求上下文。