Ok, j'ai donc une application existante à laquelle j'ai ajouté un HttpModule personnalisé. J'enregistre deux événements dans la méthode Init() (PreRequestHandlerExecute et PostRequestHandlerExecute). Le HttpModule est appelé pour chaque requête "normale". Mais non, j'ai créé un .aspx contenant quelques WebMethods qui sont appelés pour ajaxifier certains composants de l'interface utilisateur. La WebMethod est bien appelée, mais le problème est que mon HttpModule n'est PAS du tout appelé (pas d'événements, pas d'init, même pas de constructeur) lors de l'accès à la WebMethod. Le module est bien appelé lorsqu'on accède au .aspx en question comme une requête "normale". Mais il refuse d'être appelé lors de l'appel de la WebMethod.
Mon .aspx ressemble à ceci :
public partial class SelectionListService : System.Web.UI.Page
{
[WebMethod]
[ScriptMethod]
public static RadComboBoxData GetItemsAsRadComboBoxData(RadComboBoxContext context)
{
...
}
}
Mon HttpModule ressemble à ceci :
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)
{
...
}
}
Je me suis penché sur la question depuis un certain temps déjà, mais je n'arrive pas à la faire fonctionner. Avez-vous des idées ?
PS1 : le BeginRequest, etc. dans global.asax.cs est appelé lors de l'accès à la WebMethod. PS2 : J'utilise IIS7 sur Windows7.