我有一个 ASP.Net 单文件 Web 服务(一个.ashx
包含IHttpHandler
实现的文件),它需要能够返回错误作为500 内部服务器错误状态代码的响应。这是在 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
是票。哇。