Я создаю библиотеку классов сервера 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....
Я проверил содержимое байта, которое я обрезал для этого поста, и кроме временных меток, они идентичны, так что это непроблема.