ASP.NET MVC HTTP 发布/删除

问题描述 投票:0回答:2

我有一个 ASP.NET MVC 应用程序。 我有单个函数模式,将通过 HTTP POST 和 HTTP DELETE 调用。

尽管调用了 Post,但从未调用过删除。我确认 IIS 接受 HTTP 删除。有意见吗?

路线和控制器:

routes.MapHttpRoute(
            name: "RegisterCard",
            routeTemplate: "{version}/cards/{cardID}",
            defaults: new { Controller = "MyController", Action = "

           routes.MapHttpRoute(
           name: "UnregisterCard",
           routeTemplate: "{version}/cards/{cardID}",
           defaults: new { Controller = "MyController", Action = "Delete" });                




    [HttpPost]
    public async Task<HttpResponseMessage> Post(string version, string cardID);
    {
    }

    [HttpDelete]
    public async Task<HttpResponseMessage> Delete(string version, string cardID);
    {
    }
asp.net-mvc asp.net-mvc-routing http-delete
2个回答
1
投票

从上面的代码中,我认为任何具有模式

{version}/cards/{cardID}
的 url 都将由“RegisterCard”路由处理,无论动词是什么(发布/删除)。对于“删除”,将选择“注册卡”路由,然后当
[HttpPost]
操作选择器发挥作用时,将导致404错误。如果您遇到“删除”404,您可能会

一个 为路线添加约束

routes.MapHttpRoute(
    name: "RegisterCard",
    routeTemplate: "{version}/cards/{cardID}",
    defaults: new { Controller = "MyController", Action = "Post"},
    constraints: new { httpMethod = new HttpMethodConstraint(new[] { "post" }) }
);

routes.MapHttpRoute(
    name: "UnregisterCard",
    routeTemplate: "{version}/cards/{cardID}",
    defaults: new { Controller = "MyController", Action = "Delete" },
    constraints: new { httpMethod = new HttpMethodConstraint(new[] { "delete" }) }
); 

OR 创建一条将它们与单个

ActionName

合并在一起的路线
routes.MapHttpRoute(
    name: "Card",
    routeTemplate: "{version}/cards/{cardID}",
    defaults: new { Controller = "MyController", Action = "HandleCard"}
);

[ActionName("HandleCard")]
[HttpPost]
public async Task<HttpResponseMessage> Post(string version, string cardID);
{
}

[ActionName("HandleCard")]
[HttpDelete]
public async Task<HttpResponseMessage> Delete(string version, string cardID);
{
}

希望这有帮助。


0
投票

我不确定HTTP是否支持删除。无论如何,只需使用 post 进行删除操作即可。只要您不使用 GET 进行 DELETE 操作,就可以了。这是一些参考...

http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/examining-the-details-and-delete-methods

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.