我有这个模块:当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
所以当处理程序直接写入响应时,所有的头文件都会被发送。我再次检查它,这是如何工作的。谢谢。 –