我在 Windows 2008 Server 上使用 IIS 7 来运行使用 Bootstrap 的 ASP.NET 4 应用程序。该服务器有一个私有 IP 地址供工作时使用,但也可以通过公共 IP 地址从外部访问。我们的互联网接入提供商为我们进行转发。该服务器还运行 F-Secure 防病毒系统。
当我使用私有 IP 或公共 IP 从服务器本身浏览网站时,它运行正常。但是当我使用远程客户端(显然使用公共 IP)时,它运行随机。典型的场景如下:
- 我在浏览器中输入网站 URL。我进入了主页。
- 我点击链接导航到另一个页面。出现 INET_E_RESOURCE_NOT_FOUND 错误。
- 我点击浏览器的刷新。我得到了该页面。
- 我点击另一个链接。我得到了该页面。
- 我点击了另一个链接。我收到 INET_E_RESOURCE_NOT_FOUND 错误。
等等等等。这显然是随机的。有时服务器会返回页面,有时我会收到 INET_E_RESOURCE_NOT_FOUND 错误。我尝试过的每个客户端都会发生这种情况,从 Windows 10 计算机上的 Edge 到 iPhone 上的 Safari。
有时,当我首次从客户端计算机浏览服务器时,服务器无法提供主页。我重试了几次,但无济于事。然后,大约刷新 5 到 10 次后,我得到了页面。从那时起,它就正常工作了,直到最后再次失败。
据我了解,INET_E_RESOURCE_NOT_FOUND 并不意味着找不到页面(即 404),而是服务器无法找到。这通常与 DNS 或代理错误有关。
我一直在查看 IIS 日志文件。据我所知,有时日志记录会因以下条目而中断:
GET /fonts/glyphicons-halflings-regular.woff - 80 - 193.144.38.100 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/52.0.2743.116+Safari/537.36+Edge/15.15063 404 3 50 78
显然,客户端正在尝试获取字体文件,而服务器返回 404 错误。字体文件位于服务器上的正确文件夹中,因此我不确定为什么找不到它。
编辑。我现在已经修复了字体文件的问题(这是由于 IIS 上缺少 MIME 类型条目造成的),但随机的 INET_E_RESOURCE_NOT_FOUND 错误仍然存在。字体文件的 404 错误很可能是用来转移注意力的。
编辑。我对这个网站还有另一个问题,可能与此有关。请参见此处:https://stackoverflow.com/questions/43814006/smtpexception-in-asp-net-application-with-remote-browser
有什么想法吗?谢谢。
答案1
您说 ISP 正在为您进行转发,这表明他们正在代理/端口转发到内部 IP,并且您的服务器只有一个 IP 地址(可能是私有 IP 地址)。
如果这是真的,那么听起来好像是他们的代理服务器在连接到您的 IIS 服务器时出现了问题(出于多种原因),并且返回了错误。我会要求提供商检查其路由器/防火墙上的日志,看看是否是这种情况。
答案2
假设您直接在浏览器中收到此错误,而不是由代理服务器返回,您可以通过在 hosts 文件中添加条目(%windir%\System32\drivers\etc\hosts
在 Windows 中;您需要以管理员身份编辑它)来测试它是否由 DNS 问题引起,以将您网站的公共 IP 地址与其 DNS 条目关联起来。如果您这样做,并测试公共网站,但仍然收到相同的错误,则这不是 DNS 问题,您可以开始查看代理服务器配置。(请记住在测试后删除该条目!)
答案3
我怀疑你的 MIME 类型设置不正确。我建议你将其明确添加为服务器配置的一部分。
其他人之前也遇到过这个问题: https://stackoverflow.com/questions/4015816/why-is-font-face-throwing-a-404-error-on-woff-files
答案4
第一件事。服务器更新是否是最新的?检查服务器中的 .net 版本并将其更新。
确保应用程序使用的所有端口都已转发给您的 ISP
另外,用这个检查你的服务器日志https://gallery.technet.microsoft.com/scriptcenter/Get-event-logs-errors-and-6871f163
检查最常见的错误并检查是否相关。