c# - 在 ASP.Net HttpModule 中使用静态变量

标签 c# asp.net iis httpmodule

我正在使用 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时,它给了我:

来自 10/18/2012 3:37:33 PM 的用户

2012年10月18日下午3:37:35的用户

有关我的设置的信息:我正在运行 IIS7.5,我已向其中添加了一个模块,按执行优先级顺序,它是第一个。我已经在 web.config 中启用了调试。我的 VisualStudio 设置为构建调试配置,并且有一个构建后事件可以将我的 DLL 直接复制到我网站的 bin 文件夹。我将自己附加到 w3wp.exe 进程以对其进行调试。

一个有趣的事实:调试时。我在 index.html 页面上点击刷新的前两次将触发我的断点,之后就不会了。我输入的任何新 URI 只会命中断点两次。

为什么我可以刷新十次,但似乎只有两个结果?

Fiddler 结果: enter image description here

最佳答案

您的浏览器已经缓存了html、图片、css等资源。

一旦浏览器缓存了它们,就不会再次询问它们,除非您在 IE 中单击 Ctrl+F5。

您可以使用Request.Path查看请求。

HttpRequest request = app.Context.Request;
_users.Add("A user from " + DateTime.Now + " - " + 
    app.Context.Request.Path + "</br>");

关于c# - 在 ASP.Net HttpModule 中使用静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12962462/

相关文章:

c# - System.Data.SQLite - 无法访问加密数据库

c# - 如何使用 Reflection 或 Mono.Cecil 在已编译的程序集中搜索字符串?

asp.net - Web 服务中的 Microsoft 语音识别

javascript - 从网页打开外部 url 而不出现警告

xml - ASP错误: msxml3. dll错误80070005,访问被拒绝。如何设置正确的权限?

iis - StackOverflowException 加载 XsltCompiledTransform

c# - 捕获 C# .NET 中的所有崩溃

c# - 如何发送缓存控制 : no-cache in HTTP Response header?

javascript - 从 JavaScript asp.net 调用按钮单击不起作用

.net - WCF 随机返回无效 JSON