当注册以下IHttpModule时,我获得了cookie_BeginRequest的重复cookie头。
public class MyModule : IHttpModule
{
public void Init(HttpApplication context)
{
context.BeginRequest+=(sender, e) =>
{
SetValues("BeginRequest");
};
context.PreSendRequestContent+=(sender, e) =>
{
SetValues("PreSendRequestContent");
};
}
static void SetValues(string name)
{
var httpContext = HttpContext.Current;
var httpCookie = new HttpCookie("cookie_" + name, "cookie_value");
httpContext.Response.Cookies.Add(httpCookie);
httpContext.Response.Headers.Add("header_" + name, "header_value");
}
public void Dispose()
{
}
}
我希望看到以下标题:
header_BeginRequest:header_value
Set-Cookie:cookie_BeginRequest = cookie_value;路径= /
header_PreSendRequestContent:header_value
Set-Cookie:cookie_PreSendRequestContent = cookie_value;路径= /
相反,我看到(注意重复的Set-Cookie cookie_BeginRequest):
header_BeginRequest:header_value
Set-Cookie:cookie_BeginRequest = cookie_value;路径= /
Set-Cookie:cookie_BeginRequest = cookie_value;路径= /
header_PreSendRequestContent:header_value
Set-Cookie:cookie_PreSendRequestContent = cookie_value;路径= /
上面的标题是从Fiddler中提取的,以排除浏览器成为问题的根源。 我已经逐步完成了代码,看起来BeginRequest事件每个请求只触发一次。这是由header_BeginRequest标头只出现一次这一事实支持的。我还检查过该模块只注册了一次。测试全部在IIS Express和.Net 4.5下运行。
这是预期的行为吗?