DefaultInlineConstraintResolver无法解析CustomRouteConstraint - Web API

时间:2017-12-22 10:19:16

标签: c# .net asp.net-web-api asp.net-web-api2 asp.net-web-api-routing

这个问题在SO上引发了两次,我尝试了这些解决方案,但它对我不起作用。

我正在尝试为ComplexObject创建CustomRouteConstraint,这是ActionMethod中的一个参数,其中使用了HttpPost。

我正在关注此网址以实现自定义路由。

https://docs.microsoft.com/en-us/aspnet/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2

1。创建CustomRouteConstraint。

 public class CustomRouteConstraint : IHttpRouteConstraint
    {

        public bool Match(HttpRequestMessage request, IHttpRoute route, string parameterName, IDictionary<string, object> values, HttpRouteDirection routeDirection)
        {
            object value;

            if (values.TryGetValue(parameterName, out value) && value != null)
            {
                return true;
            }
            return false;
        }
    }

2。 WebAPIConfig.cs文件中的MapAttribute

public static class WebApiConfig
    {

    public static void Register(HttpConfiguration config)
    {

        var constraintResolver = new DefaultInlineConstraintResolver();
        constraintResolver.ConstraintMap.Add("CustomObjRouteConstraint", typeof(CustomRouteConstraint));
        config.MapHttpAttributeRoutes(constraintResolver);


    }
}

第3。在ActionMethod中使用约束。

    [Route("Address/{param:CustomObjRouteConstraint}")]
        [HttpPost]
        public AddressUpdateResult UpdateCustomerAddresses(UpdateCustomerAddressCommand param)
        {
           Handle(param);
            return xyz;
        }

在运行时我收到错误:

  

“DefaultInlineResolver无法解析CustomRouteConstraint”

请帮忙。

0 个答案:

没有答案