将日期传递给WebAPI - 未找到与请求URI匹配的HTTP资源

时间:2016-04-13 20:26:03

标签: asp.net asp.net-web-api2

我在Chrome Postman中提出了GET请求。它看起来如下:

  

http://localhost/WCAPI/Lookup/WCClassDesc/State/AL/Class/7230/DescCode/00/EffDate/2016-04-13

有人能看出为什么我会在Postman中得到这个回应吗?

{
  "Message": "No HTTP resource was found that matches the request URI 'http://localhost/WCAPI/Lookup/WCClassDesc/State/AL/Class/7230/DescCode/00/EffDate/2016-04-13'.",
  "MessageDetail": "No action was found on the controller 'WCClassDesc' that matches the request."
}

我的代码是:

    using System;
    using System.Web.Http;
    /// <summary>
    /// API for loading WCClassDescription which is shown on the PremByClass page. 


    namespace WCAPI.Controllers.Lookup {

        [RoutePrefix("Lookup/WCClassDesc")]
        public class WCClassDescController : ApiController {

            [Route("State/{State}/Class/{Class}/DescCode/{DescCode}/EffDate/{EffDate}")]
            public Models.Lookup.WCClassDesc Get(string ClassState, string ClassCode, string DescCode, DateTime EffDate) {

                var desc = (new Premium.BLL.WCClassDesc()).GetCurrentWCClassDesc(ClassState, ClassCode, DescCode, EffDate);
                var WC = AutoMapper.Mapper.Map<Models.Lookup.WCClassDesc>(desc);
                return WC;

            }
        }
    }

非常感谢任何帮助或指示。

杰森

1 个答案:

答案 0 :(得分:0)

您的代码存在多个问题,让我们从URI开始:

假设您使用主机的根路径(localhost)测试应用程序并遵循RoutePrefixRoute属性的定义,则资源的正确URI如下:

http://localhost/Lookup/WCClassDesc/State/AL/Class/7230/DescCode/00/EffDate/2016-04-13

这是因为WCAPI属性中没有定义RoutePrefix

另一个问题与路线参数映射有关,您将参数定义为{State}{Class},但是您要求ClassStateClassCode方法

重命名这些参数以匹配路线中定义的参数,否则Web API不会将它们映射到您的方法参数。