我有這個模塊:當HTTP頭已經發送?
public class SecureCookieModule : IHttpModule
{
public void Dispose()
{
}
public void Init(HttpApplication context)
{
context.EndRequest += OnEndRequestHandlerExecute;
}
private void OnEndRequestHandlerExecute(object sender, EventArgs e)
{
if (!AppConfig.MachineAppSettingsBool("setSecureCookiesForSecureConnections"))
{
return;
}
try
{
HttpApplication app = sender as HttpApplication;
if (app.Request.IsReallySecureConnection())
{
foreach (string s in app.Response.Cookies.AllKeys)
{
var cookie = app.Response.Cookies[s];
if (cookie.Secure == false)
{
cookie.Secure = true;
app.Response.Cookies.Add(cookie);
}
}
}
}
catch (Exception ex)
{
LogManager.GetLogger("SecureCookieModule").Error("Exception while processing http module. Ex: {0}", ex);
}
}
}
從這個我在某些情況下,響應頭已經發出已寫了,所以他們不能被修改和異常,因爲這個異常。我想念的是在哪種情況下發生這種情況,爲什麼?爲什麼在某些情況下,在執行「OnEndRequestHandlerExecute」事件之前,它們被髮送,而在其他情況下,它們不是?這種情況背後的原因是什麼導致了這種行爲?
在此先感謝!
如果請求處理程序寫入到輸出流,你不能設置cookie,因爲這些走在*** ***頭ERS哪去在***頭** *流。在**請求處理程序啓動後執行此操作**註定會失敗。我很驚訝這個作品。 – spender
所以當處理程序直接寫入響應時,所有的頭文件都會被髮送。我再次檢查它,這是如何工作的。謝謝。 –