Событие BeginRequest не запущено в моем httpmodule

У меня есть httpmodule, но после переноса приложения .NET 4 начал проявлять странное поведение. Событие BeginRequest не запускается для некоторых запросов (но запускается для других) - мне пока не удалось выработать шаблон того, когда оно запускается, а когда нет.

Кажется, что событие EndRequest всегда запускается.

Я нашел эту статью: http://connect.microsoft.com/VisualStudio/feedback/details/535999/beginrequest-event-is-not-raised-in-my-http-module-on-iis7

но единственное предложение от Microsoft, похоже, состоит в том, что необходимо сделать запись в разделе system.webServer / modules - у меня это уже есть.

Я новичок в .net и mvc - есть ли у кого-нибудь предложения, как я могу отследить причину этой проблемы?

любая помощь / предложения очень ценятся.


person soupy1976    schedule 28.02.2011    source источник
comment
Действительно ли запускается код инициализации?   -  person CodingBarfield    schedule 28.02.2011


Ответы (1)


Я потратил некоторое время, пытаясь понять, почему он не всегда срабатывает! Вот ответ: вам нужна панель обновления вокруг вызываемого запроса. Итак, если у вас есть кнопка, например, которая должна вызывать обработчики запросов начала и завершения, вы помещаете панель обновления Ajax вокруг кнопки и устанавливаете для параметра «UpdateMode» значение «Всегда». Это связано с тем, что эти события javascript срабатывают только до и после обратной передачи асинхронного кода. Панель обновления Ajax предоставит вызов asynchronos.

Пример:

<script type="text/javascript" language="javascript">
    Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
    function BeginRequestHandler(sender, args) {
        //Some code
    }
    function EndRequestHandler(sender, args) {
        //Some code
    }
</script>

<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:UpdatePanel runat="server" ID="UpdatePanel6" UpdateMode="Always">
    <ContentTemplate>
        <asp:Button runat="server" ID="btnGo" Text="Go" OnClick="btnGo_OnClick"/>    
    </ContentTemplate>
</asp:UpdatePanel>

Обратите внимание, что это правильная методология в asp.net. Я не слишком уверен в MVC. Надеюсь, это поможет.

person Dipesh Patel    schedule 25.07.2011
comment
Как выглядит метод 'btnGo_OnClick' в файле cs, пожалуйста? - person owen gerig; 10.04.2014