IIS7模块仅适用于第一次?

时间:2011-07-15 13:02:30

标签: asp.net iis-7 iis-modules

我创建了一个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

1 个答案:

答案 0 :(得分:2)

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