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)
我有一个 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)