在Route属性中包含参数时出现401错误

时间:2016-12-20 21:19:50

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

在使用参数访问我的web api控制器的get方法时,我一直收到401未经授权的错误。

我需要向Get函数发送开始日期和结束日期。我把日期包装在一个名为dateParams的对象中。

如果我没有在Get函数的Route属性中包含该参数,那么我可以正常访问它而没有任何401错误,但dateParams为空。如果我在Route属性中包含参数,那么我会得到401错误。

这没有错误,但dateParams为空:

        [HttpGet]
        [Route("api/rawdatareport")]
        public HttpResponseMessage Get(DateParams dateParams) {
             return Ok();
        }

这会引发401错误:

        [HttpGet]
        [Route("api/rawdatareport/{dateParams}")]
        public HttpResponseMessage Get(DateParams dateParams) {
             return Ok();
        }

这就是DateParams类的样子:

    public class DateParams {
        public DateTime StartDate { get; set; }
        public DateTime EndDate { get; set; }
    }

1 个答案:

答案 0 :(得分:0)

尝试在您的操作参数中添加[FromUri]属性:

[HttpGet]
[Route("api/rawdatareport/")]
public HttpResponseMessage Get([FromUri] DateParams dateParams) {
    return Ok();
}

并将其作为查询字符串参数发送到您的获取请求