WebApi POST请求由GET处理

WebApi POST请求由GET处理,post,asp.net-web-api,restsharp,Post,Asp.net Web Api,Restsharp,我正在使用RestSharp来使用我的WebApi。以下是相关代码: var insertRequest = new RestRequest("MappedSystem", Method.POST); insertRequest.AddBody(new MappedSystemCreateModel { MappedSystemDetails = new MappedSystemCreateModel.Details

我正在使用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 }
            );

有一个Post route处理程序拦截器正在检查我是否正确添加了尾随“/”。因为我没有收到301的回复,所以它被重定向了。不知怎的,这个动词在句子的某个地方不见了。答案是最初用结尾的“/”发出请求。但当然,这确实揭示了重定向中发现的错误

此外,我在请求中需要以下代码,否则正文将不会反序列化:

insertRequest.RequestFormat = DataFormat.Json;