当 HTTP 状态为“错误请求”时,HttpResponseMessage 内容丢失

本文关键字:HttpResponseMessage 错误请求 状态 HTTP 请求 错误 | 更新日期: 2023-09-27 18:33:12

var response = new HttpResponseMessage(HttpStatusCode.BadRequest)
{
    Content = new StringContent("Error in Validation"),
    ReasonPhrase = "Error in Validation"
};
throw new HttpResponseException(response);

上面的代码没有返回"验证错误"作为响应内容,而是返回"错误请求"。

string result = response.Content.ReadAsStringAsync().Result;

我可以从 ReasonPhrase 中读取它,但有些客户希望在响应正文中显示错误消息。如果 HTTP 状态设置为"正常",则它将返回正确的消息。

当 HTTP 状态为“错误请求”时,HttpResponseMessage 内容丢失

您可以考虑从 System.Net.Http 命名空间使用 HttpRequestMessageExtensions.CreateErrorReponse。

这里有一个类似问题的讨论。

能够

修复它,以防有人遇到同样的问题。我有共存的网站和API,问题是由于自定义错误页面转发。

 <httpErrors errorMode="Custom" existingResponse="Replace">
  <remove statusCode="404"/>
  <error statusCode="404" responseMode="ExecuteURL" path="/Error/PageNotFound" />     
</httpErrors>

我必须将以下部分添加到 Web.config 中以解决问题。

<location path="api">
<system.webServer>      
  <httpErrors errorMode="DetailedLocalOnly" existingResponse="PassThrough" >
    <clear/>
  </httpErrors>
</system.webServer>

相关文章:
  • 没有找到相关文章