我正在使用 HttpModule 拦截对我的网站的每个请求,以便为它们分配身份验证 cookie,这只是一个初步版本,但我的 HttpModule 中有一个静态列表,并且对于每个新请求,我都在其中添加一个元素名单。出于测试目的,我将它们全部写入响应以查看我的方法是否有效,但无论列表中有多少用户,它都只会给我两个值。
这是我的代码示例,我通过用字符串列表替换用户列表来保持简单。
public class SCCModule : IHttpModule
{
private static List<string> _users = new List<string>();
public void Init(HttpApplication context)
{
context.PreRequestHandlerExecute += OnPreRequestHandlerExecute;
}
public void Dispose()
{
}
public void OnPreRequestHandlerExecute(Object source, EventArgs e)
{
HttpApplication app = (HttpApplication)source;
HttpResponse response = app.Context.Response;
HttpRequest request = app.Context.Request;
_users.Add("A user from " + DateTime.Now + "</br>");
foreach(var u in _users)
{
response.Write(u);
}
}
}
从网站加载示例 index.html 时,它给了我:
2012 年 10 月 18 日下午 3:37:33 的用户
2012 年 10 月 18 日下午 3:37:35 的用户
关于我的设置的信息:我正在运行 IIS7.5,我已经添加了一个模块,它是执行优先级的第一个。我在 web.config 中启用了调试。我的 VisualStudio 设置为构建调试配置,并且有一个构建后事件可以直接将我的 DLL 复制到我网站的 bin 文件夹中。我将自己附加到 w3wp.exe 进程以对其进行调试。
一个有趣的事实:调试时。我在 index.html 页面上点击刷新的前两次将触发我的断点,之后它不会。我输入的任何新 URI 只会命中断点两次。
那么为什么即使我可以刷新十次,似乎也只有两个结果呢?
提琴手结果: