2010-01-14 34 views
0

我已經創建了自己的自定義httpmodule來處理URL重寫,因此像www.contoso.com/help/default.aspx這樣的URL將指向www.contoso.com/default.aspx實際資源所在的位置。使用自定義httpmodule並且'Sys'未定義錯誤

這工作正常,但由於我的httpmodule的實現我有問題ScriptResource.axd不正確運行,以添加執行按鈕點擊或ajax提供的功能所需的JavaScript。

我有IIS7設置爲使用經典的管道應用程序池。我也確保web.config文件具有必要的信息。

我在下面粘貼了這些信息。有人可以識別我錯過了或應該配置不同的東西嗎?

<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

<添加名稱= 「ScriptModule」 TYPE =「System.Web.Handlers.ScriptModule,System.Web.Extensions程序,版本= 3.5.0.0,Culture = neutral,PublicKeyToken = 31BF3856AD364E35「/> nvh0701 2010-01-14 16:18:48

回答

0

嘗試增加這樣的事情您的自定義的HttpModule:

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)); 
    } 
} 
相關問題