У меня есть клиентское приложение. NET 4.6.1, которое использует HttpWebRequest
для вызова WebAPI, размещенного на IIS. Один из вызовов - это запрос POST без тела, который не устанавливает заголовок ContentLength (HttpWebRequest.ContentLength
имеет значение по умолчанию -1, что указывает на то, что свойство не было установлено и нет данных запроса для отправки).
- Когда я отправляю этот запрос в приложение WebAPI, размещенное на IIS 8.5, запрос POST работает нормально.
- До недавнего времени я также мог отправить запрос в WebAPI, работающий на IIS Express в отладчике Visual Studio 2017, и опять же, он работал нормально. К сожалению, я больше не знаю, какая именно версия IIS Express использовалась.
Недавно я восстановил на своей машине разработки Windows 10 версии 1909 и переустановил последнюю версию Visual Studio 2017 15.9.22. После этого:
- Запросы, отправленные с машины разработчика на WebAPI, удаленно размещенный на IIS 8.5, продолжают работать нормально.
- Запросы, отправленные на WebAPI, работающий локально на IIS Express 10.0.14358.1000 в отладчике Visual Studio 2017 отклоняются с помощью 411 LengthRequired.
Я знаю, что могу (и в конечном итоге буду) исправить это, изменив свой клиентский код, установив ContentLength = 0 .
Но клиентский код отсутствует в поле, и я хотел бы исправить это на стороне сервера, если возможно, например, настроив IIS Express соответствующим образом.
Это выглядит для меня это как критическое изменение в поведении IIS между IIS 8.5 и IIS Express 10.0.14358.1000, поскольку последний IIS Express кажется более ограничительным в отказе принять POST без заголовка ContentLength.
Есть ли способ настроить IIS Express, чтобы он вел себя как раньше? Или другой способ исправить это без изменения клиентского кода?