我有一个 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/