StoredProcedure не дает результата, когда веб-сервис .asmx вызывается внешним приложением (Deltek vision) - PullRequest
0 голосов
/ 10 марта 2020

Уважаемые коллеги-разработчики,

Я начну с самого начала, чтобы предоставить как можно больше контекста и информации.

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

Функция веб-службы сделает следующее:

  • Примите 1 параметр, введите строка.
  • Выполнить SP в настроенной базе данных, приняв указанный параметр.
  • Сопоставить результат с автоматически сгенерированной моделью из EF. (Генерируется при обновлении модели)
  • Сериализует результат в строку JSON.
  • Добавьте эту строку JSON в Azure очередь

Хранимая процедура не делает ничего особенного. Некоторые объединяются и выбираются в определенных таблицах, но это так.

Изменение хранимой процедуры привело к обновлению модели (.edmx), поскольку были добавлены новые столбцы и удалены некоторые старые столбцы.

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

По запросу клиента я опубликовала веб-сервис непосредственно на рабочем сервере.

Я провела быстрый тест на рабочем сервере путем перехода к URL-адресу и ручного вызова функции, передавая правильный параметр. Все хорошо, результат, как и ожидалось. Регистрация также показала, что все прошло хорошо, и мы получили ожидаемые результаты.

Теперь начинается странная часть;

Веб-сервис используется через внешнее приложение (Deltek Vision). Он вызывается нажатием кнопки, которая затем вызывает функцию веб-сервиса, передавая настроенный параметр. После нажатия кнопки мы приступаем к проверке очереди Azure, мы получили пустое сообщение. Что?

Я проверяю файлы журнала и вижу следующее:

Примечание. Я удалил всю конфиденциальную информацию.

20200310 13:52:34 Information Function called..
20200310 13:52:34 Information Project param: Parameter
20200310 13:52:34 Information Fired SP and got result!
20200310 13:52:34 Information Raw object: System.Data.Objects.ObjectResult`1[ComplexReturnType]
20200310 13:52:34 Information Database info [Name]: CatalogName
20200310 13:52:34 Information Database info [ConnectionString]: data source=ServerInstance;initial catalog=Catalog;persist security info=True;user id=user;password=password;MultipleActiveResultSets=True;App=EntityFramework
20200310 13:52:34 Information Database info [TimeOut]: 15
20200310 13:52:34 Information Database info [DataSource]: ServerInstance
20200310 13:52:34 Information Database info [ServerVersion]: 11.00.6537
20200310 13:52:34 Information Database info [State]: Open
20200310 13:52:34 Information Element type: <Correct Type here>
20200310 13:52:34 Information New list has Items: False
20200310 13:52:34 Information Serialized response: []             <--- This is where i expect result
20200310 13:52:34 Information Succesfully added message!

По сравнению с позвоните, что я сделал, непосредственно перейдя к URL, который был потреблен:

20200310 13:48:41 Information Function called..
20200310 13:48:41 Information Project param: Parameter
20200310 13:48:41 Information Fired SP and got result!
20200310 13:48:41 Information Raw object: System.Data.Objects.ObjectResult`1[CorrectComplexType]
20200310 13:48:41 Information Database info [Name]: CatalogName
20200310 13:48:41 Information Database info [ConnectionString]: data source=ServerInstance;initial catalog=catalog;persist security info=True;user id=user;password=password;MultipleActiveResultSets=True;App=EntityFramework
20200310 13:48:41 Information Database info [TimeOut]: 15
20200310 13:48:41 Information Database info [DataSource]: ServerInstance
20200310 13:48:41 Information Database info [ServerVersion]: 11.00.6537
20200310 13:48:41 Information Database info [State]: Open
20200310 13:48:41 Information Element type: <CorrectComplexType>
20200310 13:48:41 Information New list has Items: True
20200310 13:48:42 Information Serialized response: [Correct JSON string here]   <--- Proper JSON string here
20200310 13:48:42 Information Succesfully added message!

Так что теперь я застрял с проблемой, которую я не могу решить; Хранимая процедура не выводит, когда функция вызывается через Deltek, но она будет выводить, когда функция вызывается локально.

То, что я пробовал / считал:

  • Права и права => То же самое мы называем функцию через Deltek или браузер. Тот же> код выполняется, и те же учетные записи используются для доступа к источнику данных.
  • Выполнение SP в SSMS => Работает как чудо.
  • Sql Профилировщик сервера => Я сравнил оба сценарий успеха и неудачи. Они идентичны в профилировщике. (Кажется, я не могу найти фактический вывод, сгенерированный SP в Профилировщике сервера, хотя это возможно?)
  • Запускать веб-сервис локально при подключении к производственной базе данных. Прикрепил отладчик и вызвал функцию; Результат, как и ожидалось, ничего странного, мы получили вывод.

Это работало в течение последних 6 месяцев. (До изменения)

Буду признателен за любые советы по дальнейшей диагностике.

...