c# - 如何在 ASP.Net 中发送状态代码 500 并仍然写入响应?

标签 c# asp.net rest ihttphandler

我有一个 ASP.Net 单文件 Web 服务(一个包含 IHttpHandler 实现的 .ashx 文件)需要能够返回错误作为响应 < strong>500 Internal Server Error 状态代码。这是在 PHP 中相对简单的事情:

header("HTTP/1.1 500 Internal Server Error");
header("Content-Type: text/plain");
echo "Unable to connect to database on $dbHost";

等效于 ASP.Net (C#) 的应该是:

Context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
Context.Response.ContentType = "text/plain";
Context.Response.Write("Unable to connect to database on " + dbHost);

当然,这并没有像预期的那样工作;相反,IIS 拦截 500 状态代码,丢弃我写入 Response 对象的任何内容,并发送调试信息或自定义错误页面,具体取决于应用程序的配置方式。

我的问题 - 如何抑制此 IIS 行为并直接从我的 IHttpHandler 实现发送错误信息?

此应用程序是 PHP 的端口;客户端已经写好了,所以我基本上坚持这个规范。遗憾的是,发送带有 200 状态代码的错误不适合这种模式。

理想情况下,我需要以编程方式控制行为,因为这是我们想要分发的 SDK 的一部分,没有任何“编辑此文件”和“更改此 IIS 设置”补充说明。

谢谢!

编辑:排序。 Context.Response.TrySkipIisCustomErrors = true 是门票。哇。

最佳答案

Context.Response.TrySkipIisCustomErrors = true

关于c# - 如何在 ASP.Net 中发送状态代码 500 并仍然写入响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4495961/

相关文章:

asp.net - 从下拉列表更改登录用户以进行角色测试

c# - Web 应用程序 - 自动包含文件?

node.js - POST 请求在 Restify 中不起作用,出现 500 内部服务器错误

c# - 无法在 C# 中将临时文档上传到 Adob​​e Sign

c# - 当没有文件夹命名空间时,在 MailKit 中打开邮件文件夹

c# - 在XML中,带问号的节点叫什么,在C#中如何添加?

jquery - 通过 jquery 禁用文本框

python - 您可以将 HTTPS 功能添加到 python flask Web 服务器吗?

c# - 一个 DELETE 查询,如何知道没有要删除的内容?

c# - 在两个对象列表 <T> 中查找共同项目的 'modern' 方法是什么?