Назад | Перейти на главную страницу

Почему Microsoft-HTTPAPI возвращает 404 на мой сетевой коммутатор?

Клиентские (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, иначе у вас будут плохие времена.