【问题标题】:Using custom httpmodule and have 'Sys' is undefined errors使用自定义 httpmodule 并有 'Sys' 是未定义的错误
【发布时间】:2010-01-14 16:17:36
【问题描述】:

我创建了自己的自定义 httpmodule 来处理 url 重写,这样像 www.contoso.com/help/default.aspx 这样的 url 将指向实际资源所在的 www.contoso.com/default.aspx

这很好用,但是由于我实现了一个 httpmodule,我遇到了 ScriptResource.axd 无法正常运行以添加执行按钮单击所需的 javascript 或 ajax 提供的功能的问题。

我已将 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>

【问题讨论】:

标签: httpmodule scriptresource.axd


【解决方案1】:

尝试在您的自定义 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));
    }
}

【讨论】:

    猜你喜欢
    • 2010-12-07
    • 1970-01-01
    • 1970-01-01
    • 2010-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-24
    • 2011-12-06
    相关资源
    最近更新 更多