2010-01-14 17 views
0

J'ai créé mon propre httpmodule personnalisé pour gérer la réécriture d'url afin que les urls comme www.contoso.com/help/default.aspx pointent vers www.contoso.com/default.aspx où se trouve la ressource réelle. Cela fonctionne très bien, mais en raison de mon implémentation d'un httpmodule, je rencontre des problèmes avec ScriptResource.axd qui ne fonctionne pas correctement pour ajouter le javascript nécessaire pour effectuer des clics sur les boutons ou des fonctionnalités offertes par ajax.Utiliser httpmodule personnalisé et avoir 'Sys' est des erreurs non définies

IIS7 a été configuré pour utiliser le pool d'applications de pipeline classique. J'ai également veillé à ce que le fichier web.config contient les informations nécessaires.

J'ai collé cette information ci-dessous. Quelqu'un peut-il identifier quelque chose que j'ai manqué ou aurait dû configurer différemment?

<httpHandlers> 
      <remove verb="*" path="*.asmx" /> 
       <remove path="WebResource.axd" verb="GET" /> 
      <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
      <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
      <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false" /> 
     <add verb="*" path="*.aspx" type="myHandler" /> 
     <add path="WebResource.axd" verb="GET" type="System.Web.Handlers.AssemblyResourceLoader" validate="True" /> 
     </httpHandlers> 
     <httpModules> 
      <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add name="myModule" type="myModule" /> 
     </httpModules> 
+0

nvh0701

Répondre

0

Essayez d'ajouter quelque chose comme ceci à votre HttpModule personnalisé:

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

    private void Application_OnAfterProcess(Object source, EventArgs e) 
    { 
     HttpApplication application = (HttpApplication)source; 
     HttpContext context = application.Context; 

     if (context.Request.Headers["x-microsoftajax"] == null) 
     { 
      if ((!System.IO.File.Exists(application.Request.PhysicalPath)) && 
       (!application.Request.Url.ToString().Contains(".axd")) && 
       (!application.Request.Url.ToString().Contains(".asmx"))) 
       { 
        string newUrl = "~/Search.aspx?q=" 
         + context.Server.UrlEncode(application.Request.Url.Segments.Last()); 
         ... 
        context.RewritePath(newUrl); 
       } 
      } 
     } 
    } 

    void IHttpModule.Init(HttpApplication context) 
    {  
     context.PostResolveRequestCache += (new EventHandler(this.Application_OnAfterProcess)); 
    } 
}