在“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 的基本目的是处理,
-
应用程序级事件
-
会话级事件
但我的基本问题是,在文件中使用Response.Redirect()
Global.asax
是一种好的做法吗?
是的,您可以在 Global.asax 中使用 Response.Redirect
,假设您正在执行具有请求的事件(如开始请求)。
您绝对不能在应用程序级别事件期间使用请求,因为没有可用的HttpRequest.Current
。
请注意,虽然在 Global.asax 中使用此类代码并没有什么特别的错误,但通常将此类重定向代码放入模块(即身份验证经常作为 HttpModule 完成并且有大量重定向)、表单(WebForms)或控制器 (MVC)、操作属性 (MVC)。
这不是特别好或坏的做法。你到底想做什么?您提供了一行没有任何上下文的代码。您是尝试重定向某些与此问题类似的请求,还是其他请求?
毫不奇怪,您出现该异常的原因是,由于代码在Begin_Request
之前运行,因此没有可用的请求上下文。