5
註冊RouteConstraints

有關於如何在以前的MVC版本創建RouteConstraints許多教程:如何在MVC6

請問這個工作,MVC6,專門註冊自定義路由約束,所以它可以用在ApiController Actions的屬性中?

我創建了一個自定義路由約束,所謂的NonEmptyGuid,這真的只是確保非空的Guid用作的參數GET操作:

public class NonEmptyGuid : IRouteConstraint 
{ 
    public bool Match(HttpContext httpContext, IRouter route, string routeKey, IDictionary<string, object> values, RouteDirection routeDirection) 
    { 
     if (!values.ContainsKey(routeKey)) return false; 

     if (values[routeKey].ToString().Equals(Guid.Empty.ToString())) return false; 

     return true; 
    } 
} 

問: 如何以及在哪裏註冊此自定義RouteConstraint的MVC6應用程序(例如,在這種情況下在WebApi項目中)。

回答

0

您可以使用RouteOptions註冊您的約束:

services.Configure<RouteOptions>(options => 
           options 
           .ConstraintMap 
           .Add("test", typeof(TestRouteConstraint)));