HttpWebRequest Поместите поведение глагола в IIS

Я пытаюсь понять поток диалога между моим только что написанным клиентским приложением webdav и сервером IIS. На самом деле, мне нужно это понять, поскольку он работает с https, но не с обычным http, и серверы настроены на прием обоих.

Во-первых, "PROPFIND", кажется, работает хорошо. Забавно, однако, что если я анализирую HTTP-трафик с помощью Fiddler, от сервера приходит ответ 401, который моя программа не видит... Затем я пробую ту же операцию с Windows Mini-redirector, и происходит то же самое. Там есть ответ 401, который, похоже, не влияет. Это с http.

Затем следующим шагом будет отправка файла с «PUT» в HttpWebRequest. Мое приложение не выдает никаких ошибок и даже не получает никакого ответа, оно просто ждет его бесконечно долго, что, по сути, похоже на зависание; однако в Fiddler или другом сетевом анализаторе есть ответ 401 от сервера, который мое приложение, похоже, пропускает, и после него больше нет трафика. Я пробую тогда с мини-редиректором, и там тот же 401, но есть следующий ответ 201, и файл загружается.

Кажется, все хорошо работает с https в моем приложении. Я пробовал с IIS 6.0 IIS 7 и IIS 8.0. Все они настроены на прием не SSL-трафика.

Может кто-нибудь просветить меня, почему это 401 там, что мое приложение не видит? Он также находится в трафике с мини-редиректором, но, похоже, не беспокоит.

Кроме того, есть ли опыт, почему он не работает с http, мини-перенаправитель делает так, что сервер его принимает, но будет работать с https?


person Aznarepse    schedule 28.08.2013    source источник
comment
Я нашел детальную разницу в кадрах из мини-редиректора и myapp. В запросе в фрейме mini-redir есть следующая строка: WebDav: Request, PUT /..., которой нет в фреймах моего приложения (хотя шестнадцатеричные данные в netmon ничего не показывают); таким образом, протокол в netmon отображается как webdav для mini-redir и http для моего приложения. Я предполагаю, что сервер понимает их по-разному. Любая помощь...?   -  person Aznarepse    schedule 28.08.2013
comment
Ну, похоже, что отсутствующий ответ 401 — это вызов сервера для согласования аутентификации, и это нормально в любом диалоге запроса. Есть также некоторые ответы «продолжить». Эти ответы игнорируются методом HttpWebRequest как исключения; как и должно быть. Тем не менее, я все еще не могу работать с http. Программа просто ждет и ждет... Разница между фреймом, созданным HttpWebRequest и mini-redir, заключается в последней строке WebDav: Request... Пожалуйста, есть идеи, как я могу сделать это в своем приложении?   -  person Aznarepse    schedule 29.08.2013
comment
Верно. Я не нашел, почему это не работает, но я снова закодировал функцию, используя XMLHTTPClass из MSXML COM, и она отлично работает. Я использую те же учетные данные для тех же серверов. Что-то подозрительное с HttpWebRequest.   -  person Aznarepse    schedule 29.08.2013
comment
Еще один комментарий, который может помочь кому-то в будущем с этим. У меня нет решения проблемы, с которой я столкнулся с HttpWebRequest (возможно, здесь может помочь кто-то с опытом), но обратите внимание, что использование XMLHTTPClass работает только с http по дизайну. Если вам нужно использовать также https, тогда ответом будет ServerXMLHTTPClass.   -  person Aznarepse    schedule 03.09.2013


Ответы (1)


Удаленный IIS не понравился вариант SendChunked = true. Похоже, он не любит неизвестных размеров. Код с методом HttpWebRequest имел эту опцию. Без него работает нормально.

person Aznarepse    schedule 10.09.2013