Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net IIS7模块仅第一次工作?_Asp.net_Iis 7_Iis Modules - Fatal编程技术网

Asp.net IIS7模块仅第一次工作?

Asp.net IIS7模块仅第一次工作?,asp.net,iis-7,iis-modules,Asp.net,Iis 7,Iis Modules,我创建了一个IIS模块,在页面加载之前将文本附加到页面。当我转到URL时,这在页面第一次加载时就非常有效。但是,在后续加载时,不会追加文本 有什么想法可以补救吗 ==代码== 这是我的web.config: <?xml version="1.0" encoding="utf-8"?> <configuration> <system.web> <compilation debug="true" /> </syst

我创建了一个IIS模块,在页面加载之前将文本附加到页面。当我转到URL时,这在页面第一次加载时就非常有效。但是,在后续加载时,不会追加文本

有什么想法可以补救吗

==代码==

这是我的web.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.web>
        <compilation debug="true" />
    </system.web>
    <system.webServer>
        <modules>
            <add name="MIModule" type="MI.MyModule, MI" />
        </modules>
        <caching enabled="false" enableKernelCache="false" />       
    </system.webServer>
</configuration>

_current变量实际上是HttpContext.current吗?它是模块中的静态字段吗?何时/如何初始化?我的猜测是空catch子句会吞噬所有错误,按照这个想法,您很可能会在_current上得到一个空引用。尝试删除Try/catch以了解更多关于代码错误的信息

如果它在页面之前加载,听起来更像是一个模块,而不是一个处理程序。你能发布一些代码吗?@bottlenecked-对不起,你是对的,模块不是处理器。我附加了一些代码,你说得对,电流为空,这就是为什么会发生这种情况。不知道为什么它是空的,关于如何修复它有什么想法吗?嗯,你确实有
HttpRequest request=app.Context.request,您可以同样轻松地编写
var response=app.Context.response
然后
响应。输出。写入(/*你的东西*/)
。至于为什么它是空的。。。在第一个请求完成后(当它实际初始化并随后正常运行时),它可能被设置为null,因为HttpContext是为每个请求重新创建的(一个请求单例)。虽然如果其他人知道得更好,请随时纠正我:)
public void context_PreRequestHandlerExecute(Object source, EventArgs e)
        {
            HttpApplication app = (HttpApplication)source;
            HttpRequest request = app.Context.Request;

            string pageContent = app.Response.Output.ToString();

            string useragent = "HI!<br />" + pageContent + "<hr />" ;

            try
            {
                _current.Response.Output.Write(useragent);
            }
            catch
            {
            }
        }
private HttpContext _current = null;

        #region IHttpModule Members

        public void Dispose()
        {
            throw new Exception("Not implemented");
        }

        public void Init(HttpApplication context)
        {
            _current = context.Context;

            context.PreRequestHandlerExecute += new EventHandler(context_PreRequestHandlerExecute);
        }

        #endregion