2014-11-25 55 views
0

我正在運行時異常的使用Response.Redirect()global.asax它是一個很好的做法,使用'的Response.Redirect()``中Global.asax`

結果:

HttpException:響應在此情況下不可用。

我嘗試使用,

HttpContext.Current.Response.Redirect()

結果:

NullReferenceExeption:對象沒有設置爲一個對象的一個​​實例。


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

  1. 應用級事件

  2. 會話級事件

但我根本問題是,使用是否是一個好習慣10在Global.asax文件..?

+0

爲什麼你必須在global.asax中使用它? – Manu 2014-11-25 06:10:28

+0

@Manu,因爲某些會話變量在global.asax中處理。 – Aki 2014-11-25 06:14:39

+0

你可以把Global.asax代碼放在這裏嗎? – 2014-11-25 06:20:07

回答

4

是的,你可以使用在Global.asax中Response.Redirect假設你在有請求事件都在做(如開始請求)。

你絕對不能因爲沒有HttpRequest.Current可以使用在應用級事件請求。請注意,儘管在Global.asax中有這樣的代碼沒有什麼特別的錯,但通常會將這些重定向代碼放入模塊(即認證經常以HttpModule的形式進行,並且存在大量重定向),Forms(WebForms)或Controllers(MVC) ,動作屬性(MVC)。

+0

謝謝阿列克謝,你的回答清除了我的懷疑。 – Aki 2014-11-25 07:11:11

2

這不是特別好或不好的做法。你究竟在做什麼?您提供了一行代碼,沒有任何上下文。您是否嘗試重定向某些類似this question的請求,或其他?

你得到異常的原因是,這並不奇怪,因爲沒有可用的代碼Begin_Request運行之前請求上下文。

+0

是的,我是想重定向到一些其他頁面Session_End中()事件。 – Aki 2014-11-25 07:07:30

相關問題