我有6台运行IIS和Apache的相同机器。今天其中一人决定停止提出请求。当我从localhost / resource尝试时,我可以访问所有的webapps,但是当我从url / resource尝试时,我得到了404.我对那台不起作用的机器做了Get请求,我得到了回复:
与工作服务器相比:
试图搜索这个问题,但没有提出任何问题,任何人都有任何想法?
答案 0 :(得分:2)
有点晚了,所以放在后面为后人; - )
在尝试了网络上发现的各种解决方案之后,我几乎放弃了,但发现了这个小金块。
如果响应的Server标头返回Microsoft-HttpApi/2.0
,则表示正在调用HTTP.sys,而不是IIS。
因此,许多变通办法都不起作用(URLScan等)。
然而,这有效:
net stop http
然后net start http
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个字符,所以我
我之前遇到过这些问题并且很容易排除故障,但网络上很少有解决它的问题。
试试这些链接
答案 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已释放。