IIS 8.5 400 Неправильный запрос - PullRequest
       14

IIS 8.5 400 Неправильный запрос

0 голосов
/ 05 декабря 2018

У меня есть некоторые трудности с приложением ASP.Net Core Web Api, которое размещено на IIS 8.5.IIS 8.5 возвращает код состояния 400 для конкретного пост-запроса.

Неисправный запрос выполняется веб-приложением, которое размещено в том же домене с другим портом.API настроен на обработку коров, и предварительный просмотр ошибочного запроса успешно завершен.

Я заметил странную вещь: Api развернут с включенным Swagger UI.Поэтому я попытался воспроизвести ошибку с помощью интерфейса Swagger.Но в этом случае запрос успешен.Тело и URL-адрес обоих запросов абсолютно одинаковы, и в заголовках нет заметных различий, за исключением, конечно, источника запроса.

Похоже, что запрос вообще не обрабатывается Api(В этом случае я должен видеть sth. В наших файлах журналов), поэтому я почти уверен, что ошибка происходит где-то в самом IIS.

Я уже исследовал файл httperr.log.Он содержит текущую строку во время неудавшегося запроса:

2018-12-05 15:38:36 192.168.100.132 62121 192.168.100.173 1142 HTTP / 1.1 POST / api / some / request/ путь 400 13 BadRequest myServicePool

Я надеялся, что этот файл будет содержать более подробную информацию о причине ошибки.Мне было интересно, имеет ли "13" перед "BadRequest" какое-то особое значение?

У кого-нибудь есть идея, основанная на приведенной информации, почему возникает эта ошибка?Я так не думаю.Но я был бы более чем рад, если бы кто-нибудь дал мне подсказку, где искать более подробную информацию о причине ошибки.Дайте мне знать, если вам нужно больше деталей.

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Мне удалось воспроизвести эту ошибку случайно.

Проблема заключается в том, что приложение отправляет пустой заголовок авторизации, если пользователь еще не выполнил вход.когда-либо разница между системами, а на некоторых это не проблема.

0 голосов
/ 05 декабря 2018

Лучше, если у нас будет пример кода того, как вы отправляете запрос в своем коде.

Однако, учитывая данные факты, я предполагаю, что проблема заключается в содержании тела запроса.Даже запрос на чванство и отправляемый вами запрос выглядят совершенно одинаково, в некоторых аспектах он должен отличаться.

Используете ли вы JSON-конвертер?Если вы используете JSON-конвертер и сериализуете модель .NET в строку JSON и присоединяете запрос, пожалуйста, убедитесь, что вы форматируете его с Camel Case .

.по умолчанию это может быть просто преобразование модели .NET, как в случае Паскаля.

ПРИМЕР

Я уточню это, используя Newtonsoft JSON библиотека.

.NET-модель сериализована без указания формата

var businessLeadJson = JsonConvert.SerializeObject(ObjectA);

Преобразованный результат - {"Company":"sample","ContactName":"contact 1"}

.NET-модель сериализована с указанием формата

var businessLeadJson = JsonConvert.SerializeObject(businessLead, new 
      JsonSerializerSettings() { ContractResolver = new CamelCasePropertyNamesContractResolver() });

Конвертированный результат - {"company":"sample","contactName":"contact 1"}

Обратите внимание на случай имен свойств в строках JSON.Первая буква в первом результате - заглавная.

Поэтому я рекомендую вам попробовать сериализовать объекты, которые присоединяются как полезную нагрузку (тело запроса) , указав форматирование , посколькуAPI REST ожидают строки JSON в правильном формате.

Пожалуйста, укажите форматирование регистра Camel при сериализации объекта вашего запроса.

Удачи ..!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...