不能在WebAPI get请求中使用object作为参数

时间:2017-02-02 19:25:36

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

我有一个名为DateParams的C#类,定义如下:

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

在我的控制器中,我将Get方法定义为:

    [HttpGet]
    [Route("api/myreport/{dateParams}")]
    public HttpResponseMessage Get([FromUri]DateParams dateParams) {}

我从Angular调用控制器如下:

  myService.GetMyReport = function (dateParams) {
      return $http.get(serviceURLRoot + 'api/myreport/', dateParams, { withCredentials: true }).success(function (data) {
      });
  };

我一直收到错误:The requested resource does not support http method 'GET'.

我已经验证dateParams与结构定义的服务器端匹配,并且已正确填充。 StackOverflow上的类似问题是指在控制器方法的参数列表中使用[FromUri],但这还没有解决问题。我也尝试了[FromBody],但也失败了,可能是因为Get请求无法获得正文。

2 个答案:

答案 0 :(得分:0)

试一试。这在过去对我有用

[System.Web.Http.AcceptVerbs("GET")]
[System.Web.Http.HttpGet]
[Route("api/myreport/{dateParams}")]
public HttpResponseMessage Get([FromUri]DateParams dateParams) {}

您可能正在使用System.Web.Mvc命名空间

答案 1 :(得分:0)

我已经用DateTime格式看了几次,更好的方法可能是在对象中将它们定义为字符串并将其解析为代码/模型中的日期。

要进行测试,请尝试"字符串"并查看是否有效,如果您仍需要使用DateTime类型定义模型,则需要遵循一些规则。