在“Global.asax”中使用“Response.Redirect()”是一个好习惯吗?

本文关键字:好习惯 一个 Redirect asax Global Response | 更新日期: 2023-09-27 18:31:46

我在global.asax中使用Response.Redirect()时遇到运行时异常

结果:

HttpException:响应在此上下文中不可用。

我尝试使用,

HttpContext.Current.Response.Redirect()

结果:

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


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

  1. 应用程序级事件

  2. 会话级事件

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

在“Global.asax”中使用“Response.Redirect()”是一个好习惯吗?

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

您绝对不能在应用程序级别事件期间使用请求,因为没有可用的HttpRequest.Current

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

这不是特别好或坏的做法。你到底想做什么?您提供了一行没有任何上下文的代码。您是尝试重定向某些与此问题类似的请求,还是其他请求?

毫不奇怪,您出现该异常的原因是,由于代码在Begin_Request之前运行,因此没有可用的请求上下文。