Журнали IIS показують sc-win32-status = 64, але лише через деякі мережі


12

У мене на клієнтському сервері працює програма ASP.NET (W2k3, IIS6, .NET 2.0). FWIW, це тестовий приклад, він ще не переміщений у виробництво . Отже, він не працює під SSL, балансування навантаження тощо.

Коли я отримую доступ до однієї зі сторінок на їх сервері з нашого офісу, ця сторінка потрапляє один раз. Перевіряючи журнали IIS (c: WINDOWS \ system32 \ LogFiles \ W3SVC1), відображається GET для цієї сторінки, потім я натискаю кнопку на сторінці, а файл журналу показує POST. Здається, поки що це працює нормально.

Тепер, коли я віддаляюся в мережу клієнта і отримую доступ до сторінки з однієї з локальних машин, файл журналу показує GET, потім я натискаю кнопку на сторінці, і журнал показує два POST в одну і ту ж секунду. Перший показує статус (sc-status, sc-substatus, sc-win32-status) 200 0 64, другий показує 200 0 0.

У файлі журналу обидва POST однакові. В основному журнал виглядає приблизно так (за винятком того, що я замаскував деякі дані):

#Fields: час часу s-ip cs-метод cs-uri-stem cs-uri-query s-port cs-username c-ip cs (User-Agent) sc-status sc-substatus sc-win32-status 
2009-08-11 20:19:32 xxxx GET /File.aspx - 80 - yyyy Mozilla / 4.0 + (сумісний; + MSIE + 8.0; + Windows + NT + 6.0; + WOW64; + Тризуб / 4.0; + SLCC1; + .NET + CLR + 2.0.50727; +. NET + CLR + 3.5.21022; +. NET + CLR + 3.5.30729; +. NET + CLR + 3.0.30618; + MDDR; + OfficeLiveConnector.1.4; + OfficeLivePatch .0.0) 200 0 0
11.08.2009 20:19:45 xxxx POST /File.aspx - 80 - yyyy Mozilla / 4.0 + (сумісний; + MSIE + 8.0; + Windows + NT + 6.0; + WOW64; + Тризуб / 4.0; + SLCC1; + .NET + CLR + 2.0.50727; +. NET + CLR + 3.5.21022; +. NET + CLR + 3.5.30729; +. NET + CLR + 3.0.30618; + MDDR; + OfficeLiveConnector.1.4; + OfficeLivePatch .0.0) 200 0 64
11.08.2009 20:19:45 xxxx POST /File.aspx - 80 - yyyy Mozilla / 4.0 + (сумісний; + MSIE + 8.0; + Windows + NT + 6.0; + WOW64; + Тризуб / 4.0; + SLCC1; + .NET + CLR + 2.0.50727; +. NET + CLR + 3.5.21022; +. NET + CLR + 3.5.30729; +. NET + CLR + 3.0.30618; + MDDR; + OfficeLiveConnector.1.4; + OfficeLivePatch .0.0) 200 0 0

Проблема в тому , що сторінка потрапляє двічі. База даних виконує операцію над першим запитом, потім другий запит виявляє, що виконується дублікат операції, і видає повідомлення про помилку. Користувачі вважають, що їх функціонування не вдалося, але це фактично вдалося.

Опис помилки sc-win32-status 64: "Вказане мережеве ім'я більше недоступне." Це приводить мене до думки, враховуючи, що обидва запити POST показують стан HTTP 200, що сервер успішно обслуговує запит, але клієнт ніколи не отримує повідомлення та повторно подає запит.

  • Як я можу це усунути?

  • Будь-які ідеї, що може викликати таку поведінку лише у їх внутрішній мережі?

  • Я мушу зазначити, що це відбувається на двох окремих клієнтських сайтах, але це не відбувається на шести інших наших клієнтських сайтах, або в нашому офісі, або підключення до будь-якого з наших восьми клієнтів через Інтернет.

  • Що може зробити це відтворюваним 100% часу в їх локальній мережі, але 0% часу в будь-якому іншому місці?

Оновлення: Я виявив, що дуже мала кількість дублюваних POST запитів мала sc-win32-статус 995 замість 64, як повідомлялося спочатку. Опис помилки sc-win32-status = 995: "Операція вводу / виводу була скасована через вихід потоку або запит програми." Це не має сенсу (враховуючи, що я маю повний доступ до коду). Я досі не розумію, як і чому виникає ця проблема, але новий код помилки спонукає мене вважати, що це може бути проблемою не в мережі, і я зараз досліджую можливість випадкової помилки коду.


Чи увімкнено всі поля журналу на сервері? Чи можете ви розмістити більше даних журналу для 2 запитів POST?
squillman

Я не впевнений, чи всі поля включені, але я викладаю фрагмент того, що ми бачимо.
wweicker

Просто думка, але чи трапляється це також, якщо хтось із користувачів робить це фізично, перебуваючи на одній машині? Я думаю, можливо, через віддалений сеанс трапляються сторонні клацання миші. Це робить те саме, якщо натиснути кнопку та активувати її, натиснувши клавішу Enter?
шквал

1
Кнопка побудована так, щоб приховати себе після її перемикання, будь то натисканням клавіші або вкладкою та натисканням клавіші, кнопка стане невидимою для запобігання випадкового "подвійного клацання". Це те, що ми спочатку думали, що відбувається, але після оновлення кнопки, щоб приховати себе за допомогою JavaScript, ми виявили основну мережу.
wweicker

Відповіді:


18

Це моє розуміння цього питання поки що:

  • sc-win32-status 64 означає "Вказане мережеве ім'я більше недоступне."
  • Після того, як IIS надіслав клієнту остаточну відповідь, зазвичай він чекає від клієнта повідомлення ACK.
  • Іноді клієнти скидають з'єднання замість того, щоб відправити остаточний ACK назад на сервер. Це не витончене підключення, тому IIS записує код "64".
  • Багато клієнтів скидає з’єднання, коли вони закінчать з ним, щоб звільнити сокет, а не залишати його в TIME_WAIT / CLOSE_WAIT.
  • Проксі-агенти, як правило, роблять це більше, ніж інші.

Оновлення: я знайшов цікаву інформацію тут і тут , тому я в основному переписав сторінку, щоб переконатися, що не було жодної поганої розмітки і т. Д., І ... проблема вже зникла! Це був просто постріл у темряві, і я не міг точно сказати, що саме це вирішило проблему, оскільки це зачіпало лише деяких наших клієнтів при дуже конкретних обставинах ...


Очікується, що ви цитуєте свої посилання. forums.devshed.com/showpost.php?p=1686138&postcount=9
Аміт Найду

2

Цю проблему я відчував під час спроби подати gzipped бінарні файли з IIS6 через проксі-сервер. Я не мав жодних проблем, безпосередньо переходячи на веб-сайт.

Я виявив, що це було причиною в моєму випадку, запустивши Fiddler на клієнтській машині та перевіривши відповідь. Fiddler попереджає, що відповідь кодується, а потім скаржиться, що магічне число у файлі gzip було невірним.

Я вимкнув стиснення gzip для бінарних файлів у своєму коді, і проблема перестала виникати.


-2

Я не експерт з цього питання, але я зіткнувся з подібною проблемою, яка трапилася лише при використанні IP-адреси, а не імені хоста.

Можливо, це трохи допомагає ...

Мат.


Що ви тоді зробили, щоб вирішити проблему? Ми використовуємо ім'я хоста, але, можливо, між клієнтом та сервером може бути проксі-сервер, який замість цього використовує IP-адресу ..?
wweicker
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.