Использование chunked-кодирования в запросе POST к веб-службе asmx на IIS 6 создает 404 - PullRequest
1 голос
/ 10 февраля 2010

Я использую клиент CXF для связи с веб-службой .net, работающей на IIS 6. Этот запрос (анонимный):

POST /EngineWebService_v1/EngineWebService_v1.asmx HTTP/1.1
Content-Type: text/xml; charset=UTF-8
SOAPAction: "http://.../Report"
Accept: */*
User-Agent: Apache CXF 2.2.5
Cache-Control: no-cache
Pragma: no-cache
Host: uat9.gtios.net
Connection: keep-alive
Transfer-Encoding: chunked

, за которым следуют 7 фрагментов по 4089 байт и один из 369 байтов, генерирует следующий вывод после отправки первого фрагмента:

HTTP/1.1 404 Not Found
Content-Length: 103
Date: Wed, 10 Feb 2010 13:00:08 GMT
Connection: Keep-Alive
Content-Type: text/html

Кто-нибудь знает, как заставить IIS принимать фрагментированный ввод для POST?

Спасибо

Ответы [ 2 ]

0 голосов
/ 30 сентября 2013

Возможно, на вашем сервере запущен URLScan. По умолчанию URLScan настроен на отклонение запросов с заголовком transfer-encoding: и URLScan отправляет 404 ошибки (что заметно по причине правильной ошибки сервера).

Ошибки UrlScan v3.1 приводят к 404 ошибкам, а не 500 ошибкам. Поиск 404 ошибок в журнале W3SVC будет включать в себя сбои из-за к блокировке UrlScan.

Вам нужно будет посмотреть файл, расположенный в (путь может отличаться) C:\Windows\System32\inetsrv\URLScan\URLScan.ini. Где-то там вы найдете раздел [DenyHeaders], который будет выглядеть примерно так (возможно, в нем будет больше заголовков).

[DenyHeaders]

transfer-encoding:

Удалите transfer-encoding: из этого списка, и это должно решить вашу проблему.

0 голосов
/ 10 февраля 2010

Кодирование по частям должно быть включено по умолчанию . Вы можете проверить свои настройки с помощью:

C: \ Inetpub \ AdminScripts> cscript adsutil.vbs get / W3SVC / AspEnableChunkedEncoding

404 заставляет меня задуматься, действительно ли это проблема с кодированием по частям. Вы трижды проверили URL?

...