我有一个 IIS 8.5 运行 RESTful ASP.NET 4.5 WCF 服务作为 Windows Server 2012 R2 上的应用程序。
在服务维护期间,我希望对 WCF 服务(https://server/path/service.svc/whatever/path)的所有请求都产生自定义错误代码(例如 555)和静态 JSON 响应(静态内容和正确的 Content-Type标头)。由于应该有一些自动触发的维护,因此如果可以通过编程方式触发此 IIS 行为,那就太好了。
您是否知道是否有某种方法可以为特定 URL(以及所有 REST-ful 子路径,请参见上面的示例 URL)临时提供静态 JSON 内容,并另外使用自定义 5xx 错误代码(而不是 200)作为 HTTP 响应代码?
您在问两个问题,如何执行此操作以及如何编写您想要执行的脚本。
我不知道它是否可能开箱即用,但一种解决方案是使用IIS UrlRewrite 模块,这对于各种事情都非常方便,所以我认为无论如何拥有它是个好主意。
创建一个匹配您要处理的所有请求的新规则,在您的情况下
path/service.svc/whatever/path
,您可以使用正则表达式来匹配您的请求。使用自定义响应并发送您自己的状态代码。在 web.config 你应该有这样的部分:如果你这样做,你会得到错误代码,而不是你的静态 json。在 web.config 的 system.webServer-httpErrors 下添加一个新条目:
responseMode = file 意味着静态文件的位置是相对于你的网站根目录的,在上面的例子中是你网站的根目录。
现在您必须修复内容类型,在 web.config 的 system.webServer-staticContent 下添加一个条目:
在本地测试时,您可能仍然会收到 IIS 错误页面,但远程调用它应该可以工作。
您可以在 IIS 管理器 UI 中进行所有这些更改,但如果您想编写脚本,请查看PowerShell IIS cmdlet。