在我的一个方法中,我必须从Web API 2中返回IHttpActionResult
。成功后,它返回Ok()
,或者返回带有一些消息的BadRequest()
。
我按以下方式设置BadRequest
的消息。但问题是我无法从被调用的方法中检索错误消息。我使用的是Visual Studio 2013 Update 4,版本是MVC 5.
return BadRequest("Error! Error adding the device");
请帮忙。提前谢谢。
答案 0 :(得分:3)
通过研究和研究后,我找到了解决方案。由于这是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
的讯息。 BINGO !!
答案 1 :(得分:1)
自定义错误页面也可能导致您的消息无法显示。如果您的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
答案 2 :(得分:0)
您必须设置 ReasonPhrase 并包装 ResponseMessage 才能获得 IHttpActionResult:
return this.ResponseMessage(new HttpResponseMessage
{
StatusCode = HttpStatusCode.BadRequest,
ReasonPhrase = ex.Message
});