无法在 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="Replace
到 existingResponse="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
});
在我的方法之一中,我必须从 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="Replace
到 existingResponse="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
});