Странная ошибка 400 с IIS 7.5 и веб-сервисом?

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

У меня есть сервер IIS 7.5 и база данных MSSQL на другом сервере. На сервере IIS есть веб-служба, которая взаимодействует с сервером MSSQL.

Проблема в том, что когда есть данные, которые MSSQL-сервер должен отправить обратно в веб-службу, а веб-служба доставляет их обратно в веб-браузер (JSON), я получаю ошибку 400. Просматривая логи для IIS там просто 400.... больше ничего. Когда я вставляю вызов в службу в поле URL моего браузера, я получаю следующее: "Сервер обнаружил ошибку при обработке запроса. Пожалуйста, см. Страницу справки службы для построения действительных запросов к службе".

Нет ничего плохого в том, как я называю веб-сервис. Ранее он работал на другом сервере (сервере разработки).

У кого-то есть подсказка, о чем это может быть? 400 означает неправильный URL-адрес... это не так. И почему, когда нет данных для возврата пользователю... все работает. Но когда из базы данных MSSQL извлекаются данные... появляется ошибка 400.

Надеюсь, у кого-нибудь есть советы, как это решить. Спасибо заранее.

1 ответ

Решение

Попробуйте делать снимки на каждом этапе головоломки:

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

Затем нажмите IIS и убедитесь, что ведение журнала запросов включено. Сделайте запрос и посмотрите журнал IIS. Если в стеке IIS возникла ошибка, вы можете получить более описательный код ошибки.

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

В этот момент, если запрос поступает в ваше приложение, вам, вероятно, следует поговорить с разработчиком. Однако вы можете запустить трассировку SQL Server Profiler, чтобы убедиться, что она успешно работает с базой данных.

Я уверен, что пропустил какой-то случай ошибки, но я надеюсь, что это, по крайней мере, укажет вам правильное направление.

Другие вопросы по тегам