Как отладить локальный http-сервер в собственной программе .NET, если есть различия между .NET 3.5 и 4.0? - PullRequest
1 голос
/ 16 февраля 2011

Я создаю библиотеку классов сервера WebDAV для .NET, и у меня возникли некоторые трудности.

Я планировал создать библиотеку классов для .NET 3.5, так как она может использоваться обеими .NET 3.5и 4.0 приложения.У меня было много кода из предыдущего проекта, который еще не завершен, но у него была правильная структура, поэтому я скопировал его в новый проект библиотеки классов и начал с свежих идей.

Однако, похоже, что естьнекоторые критические изменения между .NET 3.5 и 4.0 при обслуживании контента с классом .NET HttpListener среды выполнения.

Как правильно отладить отправленное сообщение?Я попробовал Fiddler, но он ничего не получит из моей программы, даже если я попытался выполнить все приведенные здесь советы: Как отобразить трафик localhost в Fiddler при отладке приложения ASP.NET?

Разница между этим постом и моей установкой заключается в том, что в настоящее время я использую обычное консольное приложение, в котором размещен HttpListener, и я говорю с ним с консольной виртуальной машины Ubuntu 10.04, работающей под управлением VMware 7.1.Лучшим модульным тестированием для WebDAV в настоящее время является приложение litmus , которое я пока не запускаю в Windows.

Я предполагаю, что разница заключается в том, почему Fiddler не принимаетлюбой трафик внутри или вне моей программы.

Причина, по которой я думаю, что есть серьезные изменения, заключается в том, что, когда лакмусовое приложение переходит к разделу 2 (копирование / перемещение), шаг 4 (убедитесь, что сервер не перезаписываетесли не сказано), он говорит:

4. copy_overwrite........ FAIL (COPY overwrites collection: Could not parse response status line)

Это если моя серверная программа и библиотека классов скомпилированы с .NET 3.5 и с 4.0:

4. copy_overwrite........ pass

Я сделал небольшой«объект-дампер» и выгрузил объект ответа, который отправляется обратно:

Вам нужно сравнить эти два в локальной программе сравнения, если вы хотите взглянуть на них.

Я удалил некоторые вещи, которые, очевидно, изменится,некоторые внутренние идентификаторы, некоторые номера портов и тому подобное, но остальное осталоськак есть.


Edit : Ну, как сказал Джон, Fiddler не годится для моей текущей настройки, но Wireshark определенно был.К сожалению, я не ближе к решению проблемы.Вот данные ответа, которые Wireshark сказал мне, что я отправлял:

HTTP/1.1 412 Pre          HTTP/1.1 412 Pre
condition Failed          condition Failed
..Transfer-Encod          ..Transfer-Encod
ing: chunked..Se          ing: chunked..Se
rver: Microsoft-          rver: Microsoft-
HTTPAPI/2.0..DAV          HTTPAPI/2.0..DAV
: 1,2,1#extend..          : 1,2,1#extend..
Date: Wed, 16 Fe          Date: Wed, 16 Fe
b 2011 15:42:02           b 2011 15:51:34 
GMT....0....              GMT....0....

Я проверил содержимое байта, которое я обрезал для этого поста, и кроме временных меток, они идентичны, так что это непроблема.

1 Ответ

2 голосов
/ 16 февраля 2011

Если вы отправляете запросы из виртуальной машины Linux, то, если у вас как-то не работает Fiddler, это объясняет, почему вы не видите трафик. Fiddler действует как прокси для клиента.

Я предлагаю вам попробовать Wireshark , если вы хотите увидеть трафик. Я ожидаю, что это будет видно либо в Windows, либо на виртуальной машине, при условии, что виртуальный сетевой порт виден для Wireshark.

...