我正在使用自定義入站URL路由「玩」,並遇到了問題。ASP.NET MVC5定製入站路由
當我將自定義路由傳遞給一個要檢查的URL時,以*。+結尾,當我提交請求時,我的類不會被觸發。
一個例子URL是「〜/老/ windows.html」
當我通過這個在調試步驟,我RouteBase執行不火。如果我編輯我傳遞給我的路由的構造函數的url以嘗試匹配「〜/ old/windows」,我的實現將按預期啓動。
再說一遍,如果我將URL更改爲「〜/ 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"}));
任何人都可以指出爲什麼有問題?