【问题标题】:HttpResponseMessage is IsSuccessStatusCode C#HttpResponseMessage 是 IsSuccessStatusCode C#
【发布时间】:2017-01-05 13:45:28
【问题描述】:

我有 API,我试图在其中使用 PutAsync 更新某些字段。如果 Put 成功,我有消息将作为响应发送。但是如果这样做时有任何异常,我将不得不发送异常消息作为响应

HttpResponseMessage responseMessage = (await client_Name.PutAsync(c_URL, httpContent));

if (responseMessage.IsSuccessStatusCode)
{
    return Ok(serviceResponse);
}
else
{
    string errormessage = responseMessage.StatusCode.ToString();
}

我不确定如何处理 HttpResponseMessage 异常。我知道responseMessage.StatusCode 给出了状态,但也不确定如何将它们构造为响应,因为返回类型是Task<IHttpActionResult>

【问题讨论】:

标签: c# asp.net asp.net-mvc asp.net-web-api httpresponsemessage


【解决方案1】:

这取决于您要发回的消息类型。最有可能的是,似乎只有 500 个就可以了。然后你就可以返回 InternalServerError:

return InternalServerError(new Exception(...));

如果您想区分各种状态,例如 500、403 等,您也可以这样做。你可以使用

return Request.CreateErrorResponse()

用代码、消息等发回任何东西。

如果你只是想作为一种代理服务器并直接返回代码,那么你可以使用这个:

return new HttpResponseMessage(statusCode)

所有这些都是实现相同结果的各种选项,即返回带有一些消息的 http 状态代码。完全由您决定您想要什么。

【讨论】:

  • 如果我使用return Request.CreateErrorResponse() 我会像return Request.CreateErrorResponse(responseMessage.StatusCode) 那样做吗??
  • 是的,没错。您需要添加可以发送空字符串或从响应中获取消息的消息。如果您有状态文本或者它可能在内容中,这取决于您的响应。你需要检查一下。
  • P.S.您可以使用 responseMessage 的 ReasonPhraseContent 属性来查看其中的值并决定您将进一步发送什么。
  • @Sid 如果你喜欢,别忘了点赞并接受答案:)
【解决方案2】:

尝试使用以下返回:

return Content(HttpStatusCode.BadRequest, "Any object");

您可以在对象字段中发送错误。

【讨论】:

    猜你喜欢
    • 2017-08-13
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    • 2018-01-26
    • 2016-12-02
    • 2014-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多