【发布时间】:2015-11-26 08:57:42
【问题描述】:
我有一个 WebApi 控制器
[RoutePrefix("api/invitations")]
public class InvitationsApiController : ApiController
还有一个动作方法:
[Route]
[HttpPost]
public IHttpActionResult Create([FromBody] CreateCommand command)
当我尝试 POST 到 http://host/api/invitations 时,我得到一个““405 Method Not Allowed”
但是当我使用另一条路线时:
[Route("test")]
[HttpPost]
public IHttpActionResult Create([FromBody] CreateCommand command)
WebApiConfig.cs
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
SetupFormatters(config);
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional });
}
并发布到http://host/api/invitations/test 的帖子。我的控制器在请求“root”时工作得非常完美。
更多关于 Http 错误的细节:
HTTP 错误 405.0 - 不允许的方法 您要查找的页面 无法显示,因为正在使用无效的方法(HTTP 动词) 用过。
Detailed Error Information:
Module DefaultDocumentModule
Notification ExecuteRequestHandler
Handler StaticFile Error
Code 0x80070001
Requested URL http://localhost:8008/api/invitations
Physical Path <removed>
Logon Method Anonymous
Logon User Anonymous
有什么建议可能是错的吗?
【问题讨论】:
-
你有路由冲突吗? 2 种方法装饰方式相同?
-
你在
~/api/invitations路径中有物理/虚拟目录吗?否则,您必须出示您的Web.Config... -
从您的方法中移除 [Route] 属性或将其更改为 [Route("")]
-
调用
http://host/api/invitations/create有效吗?当您使用[ActionName("Post")]注释您的操作时会发生什么? -
@YuvalItzchakov 它在 IIS 上运行,确定我正在发送 POST 请求。
标签: c# asp.net iis asp.net-web-api iis-modules