私はこのモジュールを持っている:私はレスポンスヘッダが既に送信されたいくつかのケースで書いたもの。このことから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"イベントを実行する前に送信されるのか、そうでない場合にはなぜですか?このような状況の原因となるルールは何ですか?
ありがとうございます!
要求ハンドラは、出力ストリームに書き込む場合、これらは***先頭に行く***ヘッド*** ERSに行くように、あなたは**、クッキーを設定することはできません*ストリームの*。リクエストハンドラが起動した後**これを行うと、失敗することになります。私はこの作品がまったく驚いています。 – spender
したがって、ハンドラがレスポンスに直接書き込むと、すべてのヘッダが送信されます。私はそれを二重にチェックして、これはどのように動作するのですか?ありがとう。 –