ASP.NET 网络 API REST 服务:HTTP 错误 405

ASP.NET Web API REST Service: HTTP ERROR 405

我有一个 ASP.NET Web API REST 服务。它是在 Visual Studio 2013 IDE.

上使用标准 ASP.NET Framework 4.5 和 Web API 2.2(版本 5.2.3)构建的

使用 Fiddler 工具我正在尝试检查 api 方法,但我收到 http 错误 405。下面是 Fiddler 的一些屏幕截图:

Headers标签信息:

原始标签信息:

基本上它说:

The requested resource does not support http method 'POST'."

下面是我的 ASP.NET Web API REST 服务的一些代码片段。

WebApiConfig.cs :

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

        config.Routes.MapHttpRoute(
            name: "WarehouseApi",
            routeTemplate: "api/{controller}/{action}/{data}"
        );
    }
}

控制器:

[RoutePrefix("api/Warehouse")]
public class WarehouseController : ApiController
{ 
    public HttpResponseMessage GetOkResponse()
    {
         return Request.CreateResponse(HttpStatusCode.OK);            
    }

    [HttpPost]
    [Route("DumpIntoFile/{data}")]                
    public HttpResponseMessage DumpIntoFile(string data)
    {
           // Stuff here
    }
}

要使用 Fiddler 对其进行测试,我使用作曲家:

但是,如果我使用 GET 方法和 url 从 Fiddler 调用 GetOkResponse 操作方法:wstestDumpFile.my。domain/api/Warehouse 那么它会起作用。

[Route("DumpIntoFile/{data}")] 更改为 [Route("DumpIntoFile")],您将数据作为 post 传递,因此不会将数据作为路由参数传递。然后您可以将:[FromBody] 添加到您的方法参数中,例如:([FromBody] string data)