AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 660555
Accepted
muffel
muffel
Asked: 2015-01-20 00:07:26 +0800 CST2015-01-20 00:07:26 +0800 CST 2015-01-20 00:07:26 +0800 CST

如何编写 IIS 脚本以提供带有自定义错误代码的静态资源?

  • 772

我有一个 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
  • 1 1 个回答
  • 974 Views

1 个回答

  • Voted
  1. Best Answer
    Peter Hahndorf
    2015-01-20T01:28:44+08:002015-01-20T01:28:44+08:00

    您在问两个问题,如何执行此操作以及如何编写您想要执行的脚本。

    我不知道它是否可能开箱即用,但一种解决方案是使用IIS UrlRewrite 模块,这对于各种事情都非常方便,所以我认为无论如何拥有它是个好主意。

    创建一个匹配您要处理的所有请求的新规则,在您的情况下path/service.svc/whatever/path,您可以使用正则表达式来匹配您的请求。使用自定义响应并发送您自己的状态代码。在 web.config 你应该有这样的部分:

    <rewrite>
      <rules>
        <rule name="Json Redirect" stopProcessing="true">
          <match url="path/service.svc/whatever/path" />
          <action type="CustomResponse" statusCode="555" subStatusCode="0" statusReason="Nothing to see here" statusDescription="Temporary static json..." />
        </rule>
      </rules>
    </rewrite>
    

    如果你这样做,你会得到错误代码,而不是你的静态 json。在 web.config 的 system.webServer-httpErrors 下添加一个新条目:

    <error statusCode="555" subStatusCode="0" path="temp.json" responseMode="File" />
    

    responseMode = file 意味着静态文件的位置是相对于你的网站根目录的,在上面的例子中是你网站的根目录。

    现在您必须修复内容类型,在 web.config 的 system.webServer-staticContent 下添加一个条目:

    <mimeMap fileExtension=".json" mimeType="text/json" />
    

    在本地测试时,您可能仍然会收到 IIS 错误页面,但远程调用它应该可以工作。

    您可以在 IIS 管理器 UI 中进行所有这些更改,但如果您想编写脚本,请查看PowerShell IIS cmdlet。

    • 2

相关问题

  • 2003 Server企业版不能运行ASP.NET应用程序?

  • 启用集成 Windows 身份验证时,ASP(经典)在哪个帐户下运行?

  • 是否有一种简单的方法可以生成有关 IIS 中“死”文件的报告?

  • IIS 7 中的 URL 重写

  • 对于 ASP.Net 应用程序,Windows 64 位相对于 32 位的主要优势是什么?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve