我第一次使用 Windows Server 2016 设置服务器,在创建新的 IIS 网站时,我发现所有请求都返回 404 Not Found。
查看 Web 服务器日志,没有记录任何请求。查看 HTTPERR 日志,我可以看到记录了 NotFound 错误,但我查看的文档 (https://support.microsoft.com/en-us/help/820729/error-logging-in-http-apis) 没有将 NotFound 列为支持的错误原因。
该应用程序是一个基于 .NET Framework 4.6.2 的原始 ASP.NET MVC 应用程序;我曾尝试在应用程序根文件夹中放置一个空的 index.html 并将其设置为默认文档,但这也不起作用。
以下是日志中的典型一行:
2018-03-26 00:39:19 192.168.3.252 60475 192.168.3.11 443 HTTP/0.9 GET / - 404 - NotFound -
该日志条目中有两件事让我感到困惑 - 为什么它给出的 HTTP 版本是 0.9,而不是我期望的 1.1 或 2.0,为什么给出的路径是 /,而不是 我期望的eg/index.html
或?/home/index
答案1
记录的路径始终是来自实际 HTTP 请求的路径,而不是结果路径(即重写后的 HTTP 路径或实际文件系统路径)。日志行的这一部分完全正常。
CookedURL + 查询
URL 和与其关联的任何查询均记录为一个字段,并以问号 (
0x3F
) 分隔。此字段的长度限制为 4,096 字节,将被截断。
这HTTP/0.9
只是非常简单的请求(格式错误或过时)的结果,GET /
没有HTTP/version
部分和附加请求行:HTTP 0.9是一个单行协议,没有任何标头,包括Host:
HTTP 1.1 标准中引入的标头。缺少Host:
标头意味着默认网站被用来代替捆绑您的实际网站有。如果默认网站没有索引,则404 - Not found
可能是由此造成的。
仅从您问题中的细节来看,我无法推断出是什么导致了此类查询。浏览器和 IIS 之间是否存在问题?
答案2
从您发布的日志条目来看,您似乎是从同一网络中的客户端计算机直接连接到服务器。您是尝试通过 IP 地址还是 DNS 名称连接到网站?
听起来您已经配置了主机名并尝试通过 IP 地址访问网站。您的绑定是如何配置的?