Клиентские (IE) запросы к статической странице html keep_alive, похоже, работают нормально, но сетевой коммутатор, выполняющий балансировку нагрузки, не может запрашивать ту же страницу при использовании того же ТОЧНОГО URL-адреса. Записи журнала HTTPERR, поступающие от коммутатора, дают 404-NotFound -
. Очевидно, что он не попадает в IIS, но почему HTTPAPI отклоняет это? Где я могу увидеть код причины или сообщение об ошибке или что-то еще? Пожалуйста, помогите: |
Выдержка из HTTPERR: Неудачные запросы сетевого коммутатора (IP-адреса удалены)
2013-02-14 18:34:55 X.X.X.X 38676 X.X.X.X 80 HTTP/1.1 HEAD /keep_alive.html 404 - NotFound -
Это повторяется каждые несколько секунд, пока коммутатор пытается получить страницу.
Захваченные сетевые кадры из моего устранения неполадок:
NETWORK SWITCH
- HTTP: Request, HEAD /keep_alive.html
Command: HEAD
- URI: /keep_alive.html
Location: /keep_alive.html
ProtocolVersion: HTTP/1.1
Host: X.X.X.X
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: X.X.X.X
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: ...
Нашел разрешение.
Проблема заключалась в конфигурации привязки в IIS. Сетевой коммутатор генерирует запрос на основе айпи адрес. В кадре запроса от сетевого коммутатора (как показано выше) вы заметите, что Host
значение передается как IP-адрес. Отсутствие соответствующей привязки, по-видимому, возвращает 404 такого рода только в журнале HTTPERR. Наша конфигурация IIS содержала только привязку для DNS-имени.
TL; DR
Убедитесь, что ваши привязки IIS содержат запись как для IP, так и для DNS, иначе у вас будут плохие времена.