我使用RestSharp来使用我的WebApi。以下是相关代码:
var insertRequest = new RestRequest("MappedSystem", Method.POST);
insertRequest.AddBody(new MappedSystemCreateModel
{
MappedSystemDetails = new MappedSystemCreateModel.Details
{
SystemName = "TestName",
SystemVersion = "TV"
}
});
var response = RestClient.Execute(insertRequest);
但是当我调试我的WebApi时,它会遇到Get()方法:
public class MappedSystemController : ApiController
{
private readonly IMappedSystemService _mappedSystemService;
public MappedSystemController(IMappedSystemService mappedSystemService)
{
_mappedSystemService = mappedSystemService;
}
public MappedSystemViewModel[] Get()
{
=> return _mappedSystemService.Get();
}
public MappedSystemViewModel Get(Guid id)
{
return _mappedSystemService.Get(id);
}
[HttpPost]
public MappedSystemViewModel Post([FromBody]MappedSystemCreateModel model)
{
return _mappedSystemService.Post(model);
}
}
我认为我的routeConfig肯定有问题,但我现在还不知道:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}/{id2}/",
defaults: new { id = RouteParameter.Optional, id2 = RouteParameter.Optional }
);
答案 0 :(得分:0)
有一个Post路由器处理程序拦截器检查我是否正确添加了尾随' /'。因为我没有回复301并重定向。在RedirectPermanently()的某处/某处,动词迷路了。答案是最初使用尾随' /'来提出请求。但是,这当然可以解释重定向中发现的错误。
此外,我在请求中需要以下代码,否则正文将不会反序列化:
insertRequest.RequestFormat = DataFormat.Json;