c# - Http 处理程序不拦截 .html 和 .aspx

标签 c# asp.net angularjs httphandler

我有使用 Angular 的 SPA(路由也使用 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 中像这样映射处理程序。它允许您使用多个路径,以逗号分隔。

<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 中,它位于不同的部分。它不支持多个路径,因此您需要为每个路径映射处理程序。

  <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>

关于c# - Http 处理程序不拦截 .html 和 .aspx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41060399/

相关文章:

javascript - 一个 Controller 如何从另一个 Controller 获取值(value)?

c# - 如何在编码 utf-8 中读取 XML 文件

c# - 来自同一 httpclient 实例中具有不同 url 的不同线程的两个请求

c# - 使用自定义应用程序池帐户从 ASP.NET 写入 Windows 事件日志

c# - SqlDataAdapter 返回空数据集

javascript - 在特定的 div 中获取检查的输入值 - 简单的 jquery 问题

javascript - Angular 注入(inject)器错误帮助 >

c# - 将 Unicode 转换为适用于电子名片的 Windows-1252

c# - 如何访问并获取另一个类的属性?

c# - ASP.NET WebAPI 和 Angular POST