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