1

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

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

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

response.StatusCode = (int)HttpStatusCode.BadRequest;

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

4

3 回答 3

1

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

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

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

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

我相信Replace这是您想要的,以便与 HTTP 状态代码一起发送自定义错误消息。

阅读使用 400 HTTP 状态代码返回正文内容以获取更多信息。

于 2013-07-22T20:10:25.460 回答
1

除了卡尔的答案,我们还可以设置标志

context.Response.TrySkipIisCustomErrors = true;
于 2013-07-22T21:36:59.787 回答
0

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

于 2013-07-22T21:14:02.373 回答