我有一个ASP.NET MVC 5控制器使用属性路由,似乎没有使用DELETE操作。ASP.NET MVC删除操作没有解雇
[Route("deletealbum/{id}")]
[AcceptVerbs(HttpVerbs.Delete)]
public ActionResult DeleteAlbum(int id)
{
// rest of the code omitted here
return Json(true, JsonRequestBehavior.AllowGet);
}
我明确地将路由名更改为deletename以排除其他路由过载冲突。
上述操作不会触发 - 我得到一个404没有从IIS找到。但是,如果我将上述操作切换到HttpVerbs.Get
,则路线没有问题。
第一次长时间用MVC而不是Web API构建API,我无法弄清楚为什么路由没有被触发 - 它几乎看起来像任何DELETE操作都被阻塞了。我在不同的控制器中看到相同的行为 - GET工作正常,但DELETE操作返回404。是否需要翻转一些配置设置以启用其他动词?
在什么样的行动resul t是发生的删除操作?我在问,因为在一个标准的mvc应用程序(不是api,而不是json)中,HttpGet必须与路径属性中的HttpPost具有相同的名称。 – 2015-04-06 09:23:53
@gerdi - 不知道我理解你的问题。路线是独一无二的(尽管我真的想和GET/POST/PUT一样 - 也就是专辑/ {id}),但为了确保没有一些路线解决问题,我使用了一个唯一的名称。我不知道基于MVC中的动词的属性路由中的名称有任何限制。 – 2015-04-06 09:59:48
WebDAV可能是问题,值得检查:http://stackoverflow.com/questions/10906411/asp-net-web-api-put-delete-verbs-not-allowed-iis-8 – tugberk 2015-04-06 10:06:04