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

对IIS的GET请求返回Microsoft HttpApi/2.0,iis,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 尝试搜索此问题,但没有发

我有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

尝试搜索此问题,但没有发现任何问题,有人知道吗?

Windows有一个HTTP服务,用于管理对IIS和Windows计算机上其他启用HTTP的服务的调用。您需要将其配置为处理您的呼叫,或者,在WAMP或类似windows场景下的非IIS web服务器的情况下,您可能只需要将其关闭

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

此配置位于注册表中的HKEY\U LOCAL\U MACHINE\System\CurrentControlSet\Services\HTTP\Parameters。在我的例子中,它令人窒息,因为我有一个RESTful调用,url中有一个400个字符的段,比默认值260多160个字符,所以我

  • 添加了注册表参数urlsectionMaxLength,DWORD值为512
  • 使用net stop http停止服务
  • 使用net start http启动服务
  • 我以前遇到过这些问题,很容易排除故障,但在web上几乎没有解决这些问题的方法

    试试这些链接

    • “”

      • 有点晚了,所以放在这里给子孙后代;-)

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

        如果响应的服务器头返回Microsoft HttpApi/2.0,则表示调用的是HTTP.sys,而不是IIS

        因此,很多变通方法都不起作用(URLScan等)

        然而,这种做法奏效了:

      • 打开regedit
      • 导航HKLM\SYSTEM\CurrentControlSet\Services\HTTP\Parameters\
      • 如果DisableServerHeader不存在,则创建它(DWORD 32位),并将其值设为2。如果它确实存在,且值不是2,请将其设置为2
      • 最后,通过调用
        net stop http
        然后
        net start http
        重新启动服务
      • src:

        将下面的注册表标志设置为:2 HKLM\SYSTEM\CurrentControlSet\Services\HTTP\Parameters\DisableServerHeader

        将此设置为2将确保自主机WCF服务不再发送服务器头,从而确保我们符合安全要求。
        请注意,这将禁用所有服务器头

        默认值0启用标头,值1禁用来自驱动程序(http.sys)的服务器标头,但应用程序仍然可以有标头

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


        希望这对某人有所帮助

        这个问题和一系列的回答帮助我弄清了我遇到的相关问题。我的问题集中在只使用一个子域访问我们的服务器(例如,在公司网络上在浏览器中键入“www/somepath”),这在过去在旧服务器上有效,但在系统升级到新服务器时不再有效。在使用Chrome开发工具检查网络流量时,我在标题中看到了意外的
        Microsoft HttpApi/2.0
        字符串

        我的HTTP.sys进程已经在进行日志记录,因此我可以验证我的通信量是否进入该服务并返回404 NotFound状态码


        我的解决方案是为子域的IIS站点添加绑定,使IIS响应而不是HTTP.sys进程,如本服务器故障文章所述-

        我在客户端站点上开发web应用程序时遇到了一个问题,即加载了站点根页面,但是对于文件夹中存在的文件,reports文件夹始终返回404。当应用程序设置为4时,404页面显示的是.Net版本的2,对根目录中不存在的页面的测试返回的404页面显示的是.Net 4

        我刚试过,就得到了一个Microsoft Reporting Services页面。不是我申请的一部分


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

        在我的情况下,运行Windows 10 Pro的是Windows多点服务

        通过执行:

        net stop wms
        

        端口80已发布。

        您是否检查了IIS上的主机头配置?这里的主题有点离题,但请检查您的服务,以查看是否已启动不应启动的主机头配置。在我的例子中,问题是我创建了到特定IP地址的IIS绑定,而不是“
        *
        ”。绑定到“
        *
        ”后,一切都按预期进行。这对我来说很有效。非常感谢。这是我认为对400个错误请求有效的唯一方法。非常感谢您的回答。没问题,很高兴能对某人有所帮助:-)非常好的推荐信!我还必须在cmd中运行“netstart w3svc”才能让我的站点重新上线。