设置Httpresponse的响应主体

时间:2013-07-22 20:01:37

标签: c# asp.net http httpresponse

我正在尝试通过执行以下操作来设置HttpResponse的响应主体:

response.Output.Write("Message Body"); //(Ive also tried just response.Write())

但是,当我跟踪我的回复时,响应正文不包含此消息。但是,在执行这些步骤之前,我通过执行以下操作设置对错误请求的响应:

response.StatusCode = (int)HttpStatusCode.BadRequest;

哪个反映得当。响应正文被设置为默认的“错误请求”

3 个答案:

答案 0 :(得分:1)

在没有看到您的配置或代码的情况下,我认为您的问题与名为existingResponse的IIS设置有关,该设置存在于web.config中:

<system.webServer>
    <httpErrors existingResponse="PassThrough"></httpErrors>
</system.webServer>

existingResponse有三个潜在值,它们是:

  • 自动:仅在设置了SetStatus标志时才保持响应不变。
  • 替换:即使设置了SetStatus标志,也替换现有的响应。
  • PassThrough:如果存在现有响应,则保持响应不变。

我相信Replace就是你想要的,以便发送自定义错误消息和HTTP状态代码。

阅读Returning a body content with 400 HTTP status code了解详情。

答案 1 :(得分:1)

除了Karl的回答,我们还可以设置标志

context.Response.TrySkipIisCustomErrors = true;

答案 2 :(得分:0)

一个选项是抛出throw new WebFaultException("Invalid request.", HttpStatusCode.BadRequest);