对IIS的GET请求返回Microsoft-HttpApi / 2.0

时间:2016-02-08 19:27:21

标签: iis

我有6台运行IIS和Apache的相同机器。今天其中一人决定停止提出请求。当我从localhost / resource尝试时,我可以访问所有的webapps,但是当我从url / resource尝试时,我得到了404.我对那台不起作用的机器做了Get请求,我得到了回复:

  • 服务器:Microsoft-HTTPAPI / 2.0
  • 连接:关闭

与工作服务器相比:

  • 服务器:Microsoft-IIS / 8.5
  • X-Powered-By:ASP.NET
  • 内容类型:text / html

试图搜索这个问题,但没有提出任何问题,任何人都有任何想法?

5 个答案:

答案 0 :(得分:2)

有点晚了,所以放在后面为后人; - )

在尝试了网络上发现的各种解决方案之后,我几乎放弃了,但发现了这个小金块。

如果响应的Server标头返回Microsoft-HttpApi/2.0,则表示正在调用HTTP.sys,而不是IIS。

因此,许多变通办法都不起作用(URLScan等)。

然而,这有效:

  1. 打开注册表
  2. 导航HKLM \ SYSTEM \ CurrentControlSet \ Services \ HTTP \ Parameters \
  3. 如果DisableServerHeader不存在,请创建它(DWORD 32位)并为其赋值2.如果它确实存在且值不是2,则将其设置为2.
  4. 最后,通过调用net stop http然后net start http
  5. 重启服务

    src:WS/WCF: Remove Server Header

      

    将以下注册表标志设置为:2   HKLM \系统\ CurrentControlSet \服务\ HTTP \参数\ DisableServerHeader

         

    将此设置为2将确保自托管WCF服务不再发送SERVER标头,从而确保我们符合安全性。
      请注意,这会禁用所有服务器标头。

         

    默认值0启用标头,值1禁用DRIVER(http.sys)中的服务器标头,但app仍然可以包含标头。

    对我来说,我必须重新启动服务器才能使更改生效。

    希望这有助于某人

答案 1 :(得分:1)

Windows有一个HTTP服务,用于管理Windows机器上对IIS和其他启用HTTP的服务的调用。您需要将其配置为处理您的呼叫,或者,对于WAMP或类似的非IIS-web-server-on-windows方案,您可能只需将其关闭。

如果您看到“Microsoft-HttpApi / 2.0”返回错误,例如400“错误的网址”或“错误的标头”等,则问题很可能是因为 HTTP。 sys服务正在拦截您的http请求并终止它,因为它不符合配置的最小验证规则

此配置位于 HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Services \ HTTP \ Parameters 的注册表中。在我的情况下,它是窒息,因为我有一个RESTful调用,在网址中有一个400字符的段,比默认值260多160个字符,所以我

  1. 添加了注册表参数 UrlSegmentMaxLength ,其DWORD值为512,
  2. 使用 net stop http
  3. 停止服务
  4. 使用 net start http
  5. 启动了该服务

    我之前遇到过这些问题并且很容易排除故障,但网络上很少有解决它的问题。

    试试这些链接

答案 2 :(得分:0)

这个问题和一系列答复帮助我了解了我所遇到的相关问题。我的问题集中在仅使用一个子域来访问我们的服务器(例如,在公司网络中在浏览器中键入“ www / somepath”),该服务器过去曾在较旧的服务器上运行,但在系统处于运行状态时不再起作用升级到新服务器。使用Chrome Devtools检查网络流量时,我在标题中看到意外的Microsoft-HttpApi/2.0字符串。

我的HTTP.sys进程已经在记录日志,因此我可以验证我的流量是否正在流向该服务并返回404 NotFound状态代码。

我的解决方案是为子域添加一个到IIS站点的绑定,使IIS响应而不是HTTP.sys进程,如此服务器故障文章-https://serverfault.com/questions/479274/why-is-microsoft-httpapi-returning-404-to-my-network-switch

中所述

答案 3 :(得分:0)

我在客户端站点上的Web应用程序上工作时,遇到了一个问题,该站点加载了站点根页面,但是reports文件夹始终为该文件夹中存在的文件返回404。将该应用程序设置为4时,404页面显示.Net版本为2,而对根目录中不存在的页面进行测试则返回一个显示.Net 4的404页面。

我只尝试了http://localhost/reports,然后返回了Microsoft Reporting Services页面。不属于我的应用程序。

当出现意外的404并且文件存在时,请确保仅检查文件夹的默认文档。

答案 4 :(得分:0)

在我看来,运行Windows 10 Pro是Windows MultiPoint Service。

通过执行:

net stop wms

端口80已释放。