【发布时间】:2015-04-25 01:50:35
【问题描述】:
我正在“玩”自定义入站 URL 路由,但遇到了问题。
当我通过我的自定义路由来检查一个以 *.+ 结尾的 URL 时,我提交请求时不会触发我的类。
一个示例 URL 是“~/old/windows.html”
当我在调试器中逐步执行此操作时,我的 RouteBase 实现不会触发。如果我编辑传递给路由构造函数的 url 以尝试匹配“~/old/windows”,我的实现将按预期触发。
再次,如果我将 url ro 检查更改为“~/old/windows”。问题再次出现。
我的路线实现如下:-
public class LegacyRoute : RouteBase
{
private string[] _urls;
public LegacyRoute(string[] targetUrls)
{
_urls = targetUrls;
}
public override RouteData GetRouteData(HttpContextBase httpContext)
{
RouteData result = null;
string requestedURL = httpContext.Request.AppRelativeCurrentExecutionFilePath;
if (_urls.Contains(requestedURL, StringComparer.OrdinalIgnoreCase))
{
result = new RouteData(this, new MvcRouteHandler());
result.Values.Add("controller", "Legacy");
result.Values.Add("action","GetLegacyURL");
result.Values.Add("legacyURL", requestedURL);
}
return result;
}
public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values)
{
return null;
}
}
在 RoutesConfig 文件中,我已经像这样注册了我的路线:-
routes.MapMvcAttributeRoutes();
routes.Add(new LegacyRoute(new[]{"~/articles/windows.html","~/old/.Net_1.0_Class_Library"}));
谁能指出为什么会出现问题?
【问题讨论】:
标签: asp.net asp.net-mvc asp.net-mvc-5 url-routing asp.net-mvc-routing