无法调用网络 api PUT 方法

Unable to call web api PUT method

[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 方法

因此,当我使用 PUT 请求调用我的方法时,出现以下错误 "message: "请求的资源不支持 http 方法 'PUT'。"。

但是当我在方法没有 int 的情况下进行相同的调用时?员工 ID 参数。调用正常。

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

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

使用[FormBody]无效,返回值为null,这是因为输入的形式是json.

问题已通过使用 Employee 类型的参数解决,该参数的 属性 为 EmployeeId,因此该值映射到员工对象的 EmployeeId , 方法签名为 Put(int id,Employee employee),

如果没有模型class绑定,可以使用JObject类型的参数作为输入参数,稍后可以从JObject中提取值。