我尝试使用HttpResponseMessage返回错误消息,我得到的就是StringContent.ToString()
。这是我的代码:
HttpResponseMessage response = new HttpResponseMessage();
if (request.Error != null)
{
response.Content = new StringContent(request.Error.Message);
response.Content.Headers.ContentType = new MediaTypeHeaderValue(ContentTypes.PlainText);
response.StatusCode = request.Error.StatusCode;
}
else
{
response.Content = new ByteArrayContent(request.PhotoAsJpeg());
response.Content.Headers.ContentType = new MediaTypeHeaderValue(ContentTypes.Jpeg);
response.StatusCode = HttpStatusCode.OK;
}
错误状态代码是401,404等等,消息是纯文本,如"照片未找到"或"错误的参数"。我的期望是,当出现错误时,带有状态代码(401等)的响应和纯文本错误消息。我收到的是一个HTML状态响应,状态代码为200,内容如下:
StatusCode:400,ReasonPhrase:'错误请求',版本:1.1,内容:System.Net.Http.StringContent,标题:{Content-Type:text / plain}
如何获取包含错误消息的响应?
答案 0 :(得分:1)
您必须将Response.StatusCode
添加到请求管道:
response.StatusCode = request.Error.StatusCode;
Response.StatusCode = request.Error.StatusCode;
否则,该框架假定为200 OK。
答案 1 :(得分:0)
请将此代码块用于错误部分。
if (request.Error != null)
{
response.ReasonPhrase= request.Error.Message;
response.StatusCode = HttpStatusCode.BadRequest;
}
我可以看到这样的反应。
StatusCode:400,ReasonPhrase:'Bad Msg',版本:1.1,内容:,标题:{}