在下面的 Controller 中,我有 2 个使用 Put 和 Patch 动词的方法,我想在不同的时间调用它们,正如你所看到的,我正在尝试传递 json 对象,但是当我运行项目并尝试调用时我收到这个错误 “发现多个与请求匹配的操作”
我确信我弄乱了路线,但不知道我到底做错了什么,这是 Controller 代码
[ApiVersion1RoutePrefix("tests")]
public class TestController : ApiController
{
[Route("{}", Name = "PackageDropOffLocation")]
[HttpPut]
[HttpPatch]
public IHttpActionResult PackageDropOffLocation(HttpRequestMessage, PackageDropOffLocationRequest packageDropOffLocationRequest)
{
return null;
}
[Route("", Name = "PackageOnBoard")]
[HttpPut]
[HttpPatch]
public IHttpActionResult PackageBoarded(HttpRequestMessage requestMessage, PackageBoardedRequest packageBoardedRequest)
{
return null;
}
}
public class PackageBoardedRequest
{
public string PackageId { get; set; }
}
public class PackageDropOffLocationRequest
{
public string Id { get; set; }
public double Longitude { get; set; }
public double Latitude { get; set; }
}
最佳答案
问题出在路线属性中:
[ApiVersion1RoutePrefix("tests")]
public class TestController : ApiController
{
[Route("PackageDropOffLocation/{}")]
[HttpPut]
[HttpPatch]
public IHttpActionResult PackageDropOffLocation(HttpRequestMessage, PackageDropOffLocationRequest packageDropOffLocationRequest)
{
return null;
}
[Route("PackageOnBoard")]
[HttpPut]
[HttpPatch]
public IHttpActionResult PackageBoarded(HttpRequestMessage requestMessage, PackageBoardedRequest packageBoardedRequest)
{
return null;
}
}
public class PackageBoardedRequest
{
public string PackageId { get; set; }
}
public class PackageDropOffLocationRequest
{
public string Id { get; set; }
public double Longitude { get; set; }
public double Latitude { get; set; }
}
关于.net - 如何在 Asp.net web Api 2 中使用多个 Put 和 Post 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35424086/