Asp.net
檢測已發送的 asp.net http 標頭
我正在向頁面添加標題,如下所示: Page.Response.AddHeader(“foo”, “bar”);
根據之前的處理,有時這會失敗並顯示“伺服器無法在發送 HTTP 標頭後附加標頭”。我通過封閉 Page.Response.AddHeader(“foo”, “bar”); 來處理這個問題。在 try-catch 構造中。但是,為了保持清潔並避免產生異常,有什麼方法可以檢測到標頭已被發送?(順便說一句,如果我嘗試評估 Page.Response.Headers 則會收到以下錯誤:“此操作需要 IIS 集成管道模式”)
謝謝
您可以使用 HttpModule 註冊 PreSendRequestHeaders 事件。當它被呼叫時,向 HttpContext.Current.Items 寫入一個值,指示正在發送標頭 - 然後在程式碼中的其他任何地方檢查 HttpContext.Current.Items 中的值以查看它是否已發送。
從 .NET 4.5.2 開始,您可以使用(請參閱msdn 文件
HeadersWritten)的 now-public屬性執行此操作:HttpResponseif (HttpContext.Current.Response.HeadersWritten) { ... }