无法在 Web 中获取 BadRequest 的错误消息 Api 2

Unable getting the Error Message of BadRequest in Web Api 2

在我的方法之一中,我必须从 Web return IHttpActionResult API 2. 成功后 returns Ok() 或者它returns BadRequest() 有一些消息。 我通过以下方式设置 BadRequest 的消息。但问题是我无法从被调用的方法中检索错误消息。我使用的是 Visual Studio 2013 Update 4,版本是 MVC 5。

return BadRequest("Error!  Error adding the device");

请帮忙。提前致谢。

经过研究和学习,我找到了解决方案。由于这是Web API 的一种方法,我已经通过我的网站调用了它。我将其命名为以下方式,其中 RequestUrl 是此 Web API 方法的 url。如果方法中有参数,我们必须把它写在querystring中。

HttpResponseMessage Response = null;
Response = client.GetAsync(RequestUrl).Result;
var stream = Response.Content.ReadAsStreamAsync().Result;

// convert stream to string
StreamReader reader = new StreamReader(stream);
string text = reader.ReadToEnd();

我们也可以使用以下代码获得响应类型。

Response.ReasonPhrase

这样我就可以收到BadRequest的消息,也可以收到Ok的消息。宾果!!

自定义错误页面也可能导致您的消息不显示。如果您的 web.config 文件有如下内容,请尝试删除它,因为它会拦截您的 400 状态错误:如果您确实有以下更改 existingResponse="ReplaceexistingResponse="PassThrough

<httpErrors existingResponse="Replace" errorMode="Custom">
  <remove statusCode="404" subStatusCode="-1"/>
  <error statusCode="404" prefixLanguageFilePath="" path="/myapppath/error404.aspx" responseMode="ExecuteURL"/>
</httpErrors

您必须设置 ReasonPhrase 并包装 ResponseMessage 以获得 IHttpActionResult:

return this.ResponseMessage(new HttpResponseMessage
        {
          StatusCode = HttpStatusCode.BadRequest,
          ReasonPhrase = ex.Message
        });