我已經創建了兩個控制器,用於出口型模式和WADL和其他一切是使用ASP.NET WebApi,我怎樣才能讓路線排除一組控制器?
所以我創建了三條路線,二爲專用控制器(Schema和WADL),一個用於「一切」的API的一部分:
config.Routes.MapHttpRoute(
name: "Schemas",
routeTemplate: "api/{controller}/{typeName}/{subType}",
defaults: new { subtype = RouteParameter.Optional },
constraints: new { controller = @"Schemas" }
);
config.Routes.MapHttpRoute(
name: "Wadl",
routeTemplate: "api/{controller}",
defaults: null,
constraints: new { controller = @"Wadl" }
);
config.Routes.MapHttpRoute(
name: "api",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional },
constraints: somethingsomethingsomething }
);
我試過下面這個頁面:http://stephenwalther.com/archive/2008/08/07/asp-net-mvc-tip-30-create-custom-route-constraints
以及他們NotEquals
類創建的變化:
public class NotEqual : IRouteConstraint
{
private IEnumerable<string> Matches;
public NotEqual(IEnumerable<string> matches)
{
Matches = matches;
}
public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
{
bool output = true;
var name = values[parameterName].ToString();
foreach (var match in Matches)
{
if (name.Contains(match))
{
output = false;
break;
}
}
return output;
}
}
,改變了第三路線是:
config.Routes.MapHttpRoute(
name: "api",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional },
constraints: new { controller = new NotEqual(new List<string> { "Schemas", "Wadl" }) }
);
public class NotEqual : IRouteConstraint
{
private IEnumerable<string> Matches;
public NotEqual(IEnumerable<string> matches)
{
Matches = matches;
}
public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
{
bool output = true;
var name = values[parameterName].ToString();
foreach (var match in Matches)
{
if (name.Contains(match))
{
output = false;
break;
}
}
return output;
}
}
不行的,但它仍然爲所有三個控制器匹配
它會正常工作的一個途徑,但自動求助頁面是醜陋誤導。
如果我在Match
上休息一下,它不會達到中斷點。
正則表達式約束完美,只是「一切」一個沒有工作
爲什麼是不是工作?
那麼,這使得事情更容易一百萬倍,歡呼! – RoboJ1M 2014-10-17 09:20:51