【发布时间】:2014-07-29 19:47:30
【问题描述】:
[RoutePrefix("ServiceRequest")]
public class ServiceRequestController : ApiController
{
[HttpPost]
[Route("")]
public IHttpActionResult Post([FromBody]ServiceRequest.Models.ServiceRequest serviceRequest)
{
return Ok();
}
}
我在WebAPI 中使用一个空的Route() 作为POST 并调用
`http://localhost.com:59985/ServiceRequest/
这会引发一个错误,指出HTTP Error 405.0 - Method Not Allowed,最可能的原因是
-
发送到 Web 服务器的请求使用的 HTTP 动词不是 被配置为处理请求的模块允许
(或)
向服务器发送了一个包含无效 HTTP 动词的请求
(或)
请求是针对静态内容的,并且包含 HTTP 动词 other 比 GET 或 HEAD
(或)
使用 HTTP 动词 POST 将请求发送到虚拟目录 并且默认文档是不支持HTTP的静态文件 GET 或 HEAD 以外的动词。
但是如果使用Route("Test"),方法just works fine如下:
[POST] 到http://localhost.com:59985/ServiceRequest/Test - 工作正常。 (Route is [Route("Test")])
[POST] 到http://localhost.com:59985/ServiceRequest -------- 不起作用(Route is [Route("")]
POST 是否允许空 Route?
有什么想法吗?
【问题讨论】:
-
对于 405 响应,您在“允许”标头中看到什么值?
-
@KiranChalla:请看下面的答案。原来是那个问题。
标签: c# .net asp.net-web-api asp.net-web-api2 asp.net-web-api-routing