无法调用网络 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中提取值。
[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中提取值。