Asp.net IIS7模块仅第一次工作?
我创建了一个IIS模块,在页面加载之前将文本附加到页面。当我转到URL时,这在页面第一次加载时就非常有效。但是,在后续加载时,不会追加文本 有什么想法可以补救吗 ==代码== 这是我的web.config: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
<?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