为什么Microsoft-HTTPAPI返回404到我的networking交换机?

客户端(IE)请求一个静态HTML keep_alive页面似乎工作得很好,但是使用相同的EXACT URL时,负载均衡的networking交换机似乎无法请求相同的页面。 来自交换机的HTTPERR日志条目给404-NotFound - 。 它显然不是对IIS的,但为什么HTTPAPI会拒绝呢? 我在哪里可以看到原因代码或错误消息,或什么? 请帮助:|

摘自HTTPERR:networking交换机发出的请求失败(IP已移除)

 2013-02-14 18:34:55 XXXX 38676 XXXX 80 HTTP/1.1 HEAD /keep_alive.html 404 - NotFound - 

当交换机尝试获取页面时,每隔几秒重复一次。

从我的故障排除中捕获networking帧:

 NETWORK SWITCH - HTTP: Request, HEAD /keep_alive.html Command: HEAD - URI: /keep_alive.html Location: /keep_alive.html ProtocolVersion: HTTP/1.1 Host: XXXX Connection: Close HeaderEnd: CRLF - HTTP: Response, HTTP/1.1, Status: Not found, URL: ProtocolVersion: HTTP/1.1 StatusCode: 404, Not found Reason: Not Found ContentLength: 315 - ContentType: text/html; charset=us-ascii + MediaType: text/html; charset=us-ascii Server: Microsoft-HTTPAPI/2.0 Date: Fri, 15 Feb 2013 16:52:52 GMT Connection: close HeaderEnd: CRLF DESKTOP - HTTP: Request, GET /keep_alive.html Command: GET - URI: /keep_alive.html Location: /keep_alive.html ProtocolVersion: HTTP/1.1 Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */* Accept-Language: en-US UserAgent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET CLR 1.1.4322; .NET4.0C; .NET4.0E) Accept-Encoding: gzip, deflate Host: XXXX Connection: Keep-Alive - Cookie: ... - Http: Response, HTTP/1.1, Status: Ok, URL: /keep_alive.html ProtocolVersion: HTTP/1.1 StatusCode: 200, Ok Reason: OK - ContentType: text/html MediaType: text/html ContentEncoding: gzip Last-Modified: Fri, 26 Feb 2010 05:11:00 GMT Accept-Ranges: bytes ETag: "0aca15a2b6ca1:0" Vary: Accept-Encoding Server: Microsoft-IIS/7.5 XPoweredBy: ASP.NET Date: Fri, 15 Feb 2013 17:15:13 GMT ContentLength: 1514 HeaderEnd: CRLF - payload: HttpContentType = text/html HtmlElement: ... 

find了解决办法。

问题是在IIS中的绑定configuration。 networking交换机根据IP地址生成请求。 在来自networking交换机的请求帧中(如上所示),您将注意到Host值正在作为IP地址传递。 缺乏适当的绑定显然只会在HTTPERR日志中返回这种性质的404。 我们的IISconfiguration只包含一个DNS名称的绑定。

TL; DR

确保你的IIS绑定包含一个IP和DNS的条目,否则你的时间就不好了。