我创建了一个IIS模块,在加载之前将文本附加到页面。当我转到URL时,这在第一次加载页面时效果很好。但是,在后续加载时,永远不会附加文本。
关于如何解决这个问题的任何想法?
== CODE ==
这是我的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>
一些模块代码:
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
答案 0 :(得分:2)
_current变量实际上是HttpContext.Current
吗?它是模块中的静态字段吗?何时/如何初始化?我的猜测是空的catch子句吞噬了所有错误,并且遵循这个想法,你很可能在_current上得到一个空引用。尝试删除try / catch以了解有关代码错误的更多信息