Http 处理程序未拦截 .html 和 .aspx

Http Handler not intercepting .html and .aspx

我有 SPA 使用 angular(路由也是 angular)。我已经编写了 http 处理程序,它将拦截旧的 url 并重定向到新的 url。

当我将路径指定为 * 时,它会命中但 *.html 不会命中我的处理程序。 请找到代码片段。

我的处理程序代码-

public class PageHandler : IHttpHandler
    {
     public void ProcessRequest(HttpContext context)
        {
            HttpRequest request = context.Request;
            HttpResponse response = context.Response;
            string newUrl=string.Empty;
            if (Convert.ToString(request.Path) != null)
                 newUrl = GetNewURL(Convert.ToString(request.Path));
            if (newUrl != string.Empty)
                response.Redirect(newUrl);
            else
                response.Redirect("/404");
        }
}

Webconfig 设置-

 <handlers>
            <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
            <remove name="OPTIONSVerbHandler" />
            <remove name="TRACEVerbHandler" />
          <add verb="*" path="*.html,*.aspx" name="myHandler" type="LucidFox.Helpers.PageHandler"/>
 </handlers>

不确定为什么它不拦截 .aspx 和 .html

IIS 7 的处理程序映射与 IIS 6 的处理程序映射不同。在 IIS 6 中,您可以像这样映射您的处理程序 web.config.It 允许您使用多个路径,以逗号分隔。

<handlers>
            <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
            <remove name="OPTIONSVerbHandler" />
            <remove name="TRACEVerbHandler" />
          <add verb="*" path="*.html,*.aspx" name="myHandler" type="LucidFox.Helpers.PageHandler"/>
 </handlers>

在 IIS 7 中,它是不同的 section.It 不支持多路径,因此您需要为每个路径映射您的处理程序。

  <handlers>
   <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
   <remove name="OPTIONSVerbHandler" />
   <remove name="TRACEVerbHandler" />
   <add verb="*" path="*.html" name="myHandler" type="LucidFox.Helpers.PageHandler"/>
   <add verb="*" path="*.aspx" name="myHandler" type="LucidFox.Helpers.PageHandler"/>
 </handlers>