asp.net-web-api – 为什么我在web api中从我的POST获得404响应

前端之家收集整理的这篇文章主要介绍了asp.net-web-api – 为什么我在web api中从我的POST获得404响应前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的Web api控制器中有以下操作:
// POST api/<controller>
    [AllowAnonymous]
    [HttpPost]
    public bool Post(string user,string password)
    {
         return true; 
    }

当使用fiddler或测试jQuery脚本来触发404状态时,我收到以下错误

{“消息”:“没有找到符合请求URI的HTTP资源”http://localhost/amsi-v8.0.0/api/account“。”,“MessageDetail”:“控制器上没有找到任何操作”帐户’符合请求。“}

我的http路由如下:

RouteTable.Routes.MapHttpRoute(
            name: "DefaultApi",routeTemplate: "api/{controller}/{id}",defaults: new { id = RouteParameter.Optional }
        );

得到工作正常我在这里发现了另一个问题,它从IIS中删除WebDAV。我试过,还是一样的问题。

为什么我得到404

解决方法

ASP.NET Web API中的默认操作选择行为也关心您的操作方法参数。如果它们是简单类型的对象,并且它们不是可选的,则需要提供它们才能调用该特定的操作方法。在您的情况下,您应该向URI发送一个请求,如下所示:

/api/account?user=Foo&password=bar

如果要在请求体内获取这些值,而不是查询字符串(这是一个更好的主意),只需创建一个User对象并相应地发送请求:

public class User { 
    public string Name {get;set;}
    public string Password {get;set;}
}

请求:

POST http://localhost:8181/api/account HTTP/1.1

Content-Type: application/json

Host: localhost:8181

Content-Length: 33

{“Name”: “foo”,“Password”:”bar”}

您的操作方法应该如下所示:

public HttpResponseMessage Post(User user) {

    //do what u need to do here

    //return back the proper response.
    //e.g: If you have created something,return back 201

    return new HttpResponseMessage(HttpStatusCode.Created);
}

猜你在找的asp.Net相关文章