Модуль IIS7 работает только в первый раз? - PullRequest
0 голосов
/ 15 июля 2011

Я создаю модуль 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>

Код модуля:

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 Ответ

2 голосов
/ 18 июля 2011

Является ли переменная _current на самом деле HttpContext.Current?Это статическое поле в вашем модуле?Когда / как это инициализируется?Я думаю, что пустое предложение catch поглощает все ошибки, и, следуя этой мысли, вы, скорее всего, получите нулевую ссылку на _current.Попробуйте удалить пробную версию, чтобы узнать, что не так с вашим кодом

...