Хорошо, это план. Я размышлял об этом несколько часов. Я понятия не имею, как это решить. Но, возможно, кто-то здесь сможет распознать проблему и указать мне правильное направление.
У меня есть сервер IIS 7.5 и база данных MSSQL на другом сервере. На сервере IIS есть веб-сервис, который взаимодействует с сервером MSSQL.
Проблема в том, что когда есть данные, которые сервер MSSQL должен отправить обратно в веб-сервис, а веб-сервис доставляет их обратно в веб-браузер (JSON), я получаю ошибку 400. Просматривая логи для IIS, там всего 400 .... не более того. Когда я выполняю вызов службы в поле URL-адреса своего браузера, я получаю следующее: «Сервер обнаружил ошибку при обработке запроса. Для создания действительных запросов к службе см. Страницу справки службы».
Нет НИЧЕГО неправильного в том, как я вызываю веб-сервис. Раньше он работал на другом сервере (сервере разработки).
Кто-нибудь знает, о чем это может быть? 400 означает неправильный URL ... это не так. И почему, когда нет данных для возврата пользователю ... все работает. Но когда есть данные, полученные из базы данных MSSQL ... появляется ошибка 400.
Надеюсь, у кого-то есть советы, как решить эту проблему. Спасибо заранее.
Попробуйте делать снимки на каждом этапе головоломки:
Начните с wirehark у своего клиента и убедитесь, что запрос, который вы делаете, не уродливый. Возможно, имя сервера длиннее или имеется недопустимый символ, из-за которого происходит сбой рабочего сервера.
Затем нажмите IIS и убедитесь, что ведение журнала запросов включено. Сделайте запрос и посмотрите журнал IIS. Если стек IIS генерирует ошибку, вы можете получить более описательный код ошибки.
Оттуда проверьте журнал событий приложения, чтобы убедиться, что в журнале нет никаких исключений уровня приложения. Убедитесь, что ваш пул приложений работает правильно. Убедитесь, что у вас не включена перезапись URL. Убедитесь, что правильные обработчики приложений настроены или, по крайней мере, не перезаписаны.
На этом этапе, если запрос поступает в ваше приложение, вам, вероятно, следует поговорить с разработчиком. Однако вы можете запустить трассировку SQL Server Profiler, чтобы убедиться, что он успешно попадает в базу данных.
Я уверен, что пропустил какой-то случай с ошибкой, но надеюсь, что это, по крайней мере, указывает вам правильное направление.