无法调用web api PUT方法

时间:2015-07-02 19:17:51

标签: asp.net asp.net-mvc-3 web asp.net-web-api asp.net-web-api2

[System.Web.Http.Route("{id}")]
    [System.Web.Http.HttpPut]
    public async Task<ComplaintVM> Put(int id,int? employeeId)
    {
        var obj = _resolver.GetService<Complaint>();
        obj.FranchiseId = 1;
        obj.Id = id;
        await obj.GetDetailAsyc();
        obj.EmployeeId = employeeId;
        await obj.AllocateAndManageCallAsyc();
        return obj.EntityToVM();
    }

这是使用[System.Web.Http.RoutePrefix(“api / app / complaint”)]

的方法

所以当我用PUT请求调用我的方法时,我收到以下错误“message:”请求的资源不支持http方法'PUT'。“。

但当我在方法没有int时进行相同的调用? employeeId参数。这个电话很好。

我将employeeId作为json格式的请求传递。我正在使用fiddler来测试代码

1 个答案:

答案 0 :(得分:0)

Put(int id,int? employeeId)的问题是变量int? employeeId,因为它不是URL的一部分,模型绑定器无法绑定属性,因此无法使用2个参数调用该方法。

使用[FormBody]不起作用,返回的值为null,这是因为输入是以json的形式。

使用类型Employee的参数解决了该问题,该参数的属性为EmployeeId,因此该值已映射到employee对象的EmployeeId,方法签名为{ {1}},

如果没有要绑定的模型Put(int id,Employee employee),则可以使用类型class的参数作为输入参数,稍后可以从JObject中提取该值。