SSRS 2008 - reportservices.asmx не совместим с устаревшим приложением - PullRequest
1 голос
/ 15 октября 2011

Мы приобрели приложение, написанное примерно в 2003 году. Часть приложения использует службы отчетов SQL Server для создания PDF-отчетов. В основном в приложении пользователь нажимает кнопку, изменяет параметры (начальную / конечную дату), и отчет передается (я думаю) в формате PDF, чтобы его можно было распечатать. Отлично. Прекрасно работает в SQL 2005.

Тем не менее, SQL 2008 - это еще одно чудовище. Я могу запустить тот же отчет из веб-интерфейса (http://127.0.0.1/reports/...)., но URL не работает. Я покопался и обнаружил, что приложение отправляет вызов на 127.0.0.1/reportserver/reportservice.asmx. Теперь оно возвращает пустое строка вместо документа XML.

Возможно, существует версия, совместимая с 2005, под названием reportserver / reportexecution2005.asmx, но она генерирует странную ошибку SOAP. "System.Web.Services.Protocols.SoapException: сервер не распознал значение HTTP-заголовка SOAPAction: http://schemas.microsoft.com/sqlserver/2003/12/reportingservices/Render. в System.Web.Services.Protocols.Soap11ServerProtocolHelper.RouterRequest () ....

Теперь я замечаю, что когда я пытаюсь использовать Internet Explorer и перехожу к 127.0.0.1/reportserver/reportservice.asmx, я получаю приглашение на вход в систему, тогда как это было не так с SSRS 2005. Я также замечаю, что если я перехожу к reportserver /reportexecution2005.asmx возвращает XML-страницу, которая в основном похожа на ту, что была возвращена в SSRS 2005.

Так что, очевидно, я что-то упустил. Я думаю, так как приложение было создано некоторое время назад, я должен был использовать версию SQL2000, которая является 127.0.0.1/reportserver/reportservice.asmx. Но я думаю, что теперь есть ошибка аутентификации.

Так или иначе. Я невежественен. У кого-нибудь есть мысли? Спасибо.
У нас нет исходного кода для приложения, но я могу изменить параметры соединения, как я могу попросить его запросить ReportServiceXXX.asmx вместо ReportService.asmx

1 Ответ

1 голос
/ 26 сентября 2012

Вы очень близки к тому, чтобы увидеть проблему.Если вы внимательно посмотрите на XML из ReportExecution2005.asmx, вы увидите, что он находится в Soap12.Ваше сообщение об ошибке показывает, что был сделан вызов с использованием метода System.Web.Services.Protocols.Soap11ServerProtocolHelper.RouterRequest, который отправляет сообщение Soap11.У меня та же проблема, но я еще не решил ее.

У меня есть два варианта: добавить привязку к службе отчетов SQL 2008, чтобы принимать Soap11, или изменить мой код для отправки Soap12.Я надеюсь на простое изменение конфигурации в SQL-сервере, но пока не нашел его.

...