ОБНОВЛЕНИЕ : Это оказалось проблемой с антивирусом ESET, работающим на веб-сервере и выполняющим оперативную проверку HTTP-соединений с веб-сервера на сервер SOAP.
Полное описание : Для записи это дефект в обработке протокола HTTP в .NET. Сценарий таков:
Клиент отправляет заголовок HTTP POST:
POST /WS/Test.asmx HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 2.0.50727.3603)
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://testuri.org/HelloWorld"
Host: loadtest-app
Content-Length: 288
Expect: 100-continue
Connection: Keep-Alive
Контент не отправлен из-за Expect: 100-Continue. Сервер теперь отвечает:
HTTP/1.1 100 Continue
На данный момент клиент не отвечает. Обходной путь для этого состоит в том, чтобы отключить 100-continue, который по существу заставляет заголовок запроса и контент отправляться в одном чанке. Это можно сделать в файле web.config с помощью:
<system.net>
<settings>
<servicePointManager expect100Continue="false"/>
</settings>
</system.net>
Однако, если мы также включим ведение журнала трассировки на стороне клиента, то будет выдано исключение протокола, указывающее, что за CR следует заголовок LF в заголовках HTTP. Кажется, где-то есть хрупкий код в сетевой логике .Net. Напомним, что это проблема только ASP.NET в IIS 5.1 (версия, которая работает на XP).