2016-02-12 85 views
0

ASP.NET Web API中的Request.CreateResponse(HttpStatusCode.OK)Request.CreateResponse(HttpStatusCode.OK, object)有什么区别?为什么在提供响应模型时必须指定HTTP状态码?

如果与对象对应的模型没有状态,是不是会将HttpStatusCode设置为true或false?

我来这个问题,因为以下情形的

public HttpResponseMessage Put(int id, ModelObject object) 
     { 
      if (ModelState.IsValid && id == object.objectID) 
      { 
       db.Entry(object).State = EntityState.Modified; 

       try 
       { 
        db.SaveChanges(); 
       } 
       catch (DbUpdateConcurrencyException) 
       { 
        return Request.CreateResponse(HttpStatusCode.NotFound); 
       } 

       return Request.CreateResponse(HttpStatusCode.OK); 
      } 
      else 
      { 
       return Request.CreateResponse(HttpStatusCode.BadRequest); 
      } 
     } 

**,如果我检查httpresponsemessage.statuscode它显示httpresponsemessage是即使行执行

任务响应调用的方法无效= httpClient.PutAsJsonAsync(uri,modelObject);

  return JsonConvert.DeserializeObjectAsync<HttpResponseMessage>(response.Result.Content.ReadAsStringAsync().Result).Result; 

是,这是正确的

+0

也许你需要赶上(DbUpdateConcurrencyException ex) 返回Request.CreateResponse(HttpStatusCode.NotFound,ex.Message); } –

+0

我已经用PUT方法的invoke部分提出了我的问题。你能看看吗?我可能会在返回类型和序列化在那里做错了 – jubi

回答

0
Request.CreateResponse(HttpStatusCode.OK) 

创建只有httpStatusCode

Request.CreateResponse(HttpStatusCode.OK,"this test message") 

创建httpStatusCode与HTTPResponseMessage

+0

public HttpResponseMessage PutApplicationRole(){return Request.CreateResponse(HttpStatusCode.OK);}如果我试图让我的控制器中的这个值(message.IsSuccessStatusCode)它会是什么返回。在这里,我越来越空eventhough我设置HttpStatusCode – jubi

+0

我来问这个问题,因为如果我使用我的评论中提到的代码它是给出一个空响应。和我我使用Request.CreateResponse(HttpStatusCode.OK,modelobject)我没有得到空引用 – jubi

0

相关联。根据你的措辞回应的回应,你似乎混淆元数据和有效载荷。

HTTP消息的状态行和标题描述了HTTP级别发生了什么,因此客户端应用程序(“用户代理”)知道如何解释响应。

然后是服务器希望返回到客户端的有效负载。尽管头部描述了有效载荷,但有效载荷对HTTP事物没有任何影响。

下repsonse是完全有效的:

HTTP/1.1 404 Not Found 
... 

{ 
    "found" : "true" 
} 

于是如下:

HTTP/1.1 200 OK 
... 

{ 
    "status" : "error" 
} 

的WebAPI是不会看你的有效载荷,以确定该状态代码(因为没有两者之间的关系),因此您可以分别指定响应代码及其有效负载。

相关问题