HttpResponseMessage StringContent替换消息内容

时间:2015-01-05 18:16:53

标签: c# asp.net-mvc

我尝试使用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}

如何获取包含错误消息的响应?

2 个答案:

答案 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,内容:,标题:{}