IHttpModule не вызывается для моего WebMethod - PullRequest
2 голосов
/ 02 сентября 2011

Хорошо, у меня есть приложение, в которое я добавил свой HttpModule.Я регистрирую два события в методе Init () (PreRequestHandlerExecute и PostRequestHandlerExecute).HttpModule вызывается для каждого «нормального» запроса.Но не я создал .aspx, содержащий несколько WebMethods, которые вызываются для адаптации некоторых компонентов пользовательского интерфейса.WebMethod вызывается красиво, но проблема в том, что мой HttpModule НЕ вызывается вообще (без событий, без инициализации, даже без конструктора) при доступе к WebMethod.Модуль красиво вызывается при обращении к рассматриваемому ASPX как «нормальному» запросу.Но он отказывается вызываться при вызове WebMethod.

Мой .aspx выглядит так:

public partial class SelectionListService : System.Web.UI.Page
{
    [WebMethod]
    [ScriptMethod]
    public static RadComboBoxData GetItemsAsRadComboBoxData(RadComboBoxContext context)
    {
       ...
    }
}

Мой HttpModule выглядит так:

public class MyModule : IHttpModule, IRequiresSessionState
{
    public MyModule ()
    {
    }

    public void Init(HttpApplication context)
    {
        context.PreRequestHandlerExecute += new EventHandler(Application_PreRequestHandlerExecute);
        context.PostRequestHandlerExecute += new EventHandler(Application_PostRequestHandlerExecute);
    }

    private void Application_PreRequestHandlerExecute(object sender, EventArgs e)
    {
       ...
    }

    private void Application_PostRequestHandlerExecute(object sender, EventArgs e)
    {
       ...
    }
 }

Я копался в этом уже довольно давно, ноЯ просто не могу заставить его работать.Любые идеи?

PS1: BeginRequest и т. Д. В global.asax.cs вызывается при доступе к WebMethod.PS2: я использую IIS7 в Windows7.

Ответы [ 2 ]

3 голосов
/ 02 сентября 2011

, так как PageMethods должен быть статическим, экземпляр класса Page со всеми его событиями и конвейером ASP.NET никогда не происходит.Вы просто получаете результат вашего вызова PageMethod, и это все.

1 голос
/ 02 сентября 2011

У меня есть проект с такой же проблемой.Мы обнаружили, что первым событием в конвейере, которое мы могли запустить для WebMethods, было событие AcquireRequestState.Мы подключились к этому с помощью HttpModule, чтобы выполнить проверку авторизации, требуемую для приложения.

Я не знаю, что делают ваши обработчики запросов до и после запроса, но, возможно, вы могли бы немного изменить логикув обработчик событий AcquireRequestState.

...