我有使用 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/