Ранее мы разрабатывали веб-сервис ReportServer / ReportService2005.asmx.
Чтобы получить доступ к этим веб-службам, в документации MSDN предлагаются старые справочные технологии на основе .NET 2.0. Но мы специально решили использовать технологию WCF (System.ServiceModel) для доступа к этому сервису. Независимо от того, используете ли вы .NET 2.0 WSDL или ссылки на службы WCF, в обоих случаях создаются прокси-классы для переноса методов веб-службы. Примечательно, что сами прокси-классы будут иметь разные (но функционально равные) реализации. Ссылка: http://msdn.microsoft.com/en-us/library/ms155134.aspx
Мы добились больших успехов с сервисным прокси на основе WCF по сравнению с ReportService2005 (для SSRS 2008). Недавно нас попросили сделать то же самое, но использовать новую веб-службу ReportService2010 (для SQL Server 2008 R2), поскольку старые службы ReportService2005.asmx / ReportService2006.asmx устарели. Ссылка: http://msdn.microsoft.com/en-us/library/ms154052.aspx
Для контекста: службы ReportService2006.asmx предназначены для использования SSRS в режиме Sharepoint Integrated - предположительно, это главным образом связано с безопасностью (аутентификация / авторизация).
В самых простых сроках новые сервисы ReportService2010.asmx представляют собой объединение старых сервисов ReportService2005.asmx и ReportService2006.asmx, и теперь вы можете использовать сервисы ReportService2010.asmx для «Native» или «SharePoint Integrated». "scanarios.
После всего этого у меня вопрос: что еще отличается на уровне API?
PS: я также обнаружил, что SSRS2008R2 больше не поддерживает использование Anonymous
Например, я заметил, что в старых сервисах, используемых для указания, что режим безопасности клиента WCF был установлен для «TransportCredentialOnly» с использованием NTLM и передачей имени пользователя из ClientCredentials. В отличие от этого, в новых службах 2010 года режим безопасности клиента WCF теперь установлен на «Нет», и сообщение все еще содержит имя пользователя, но без какой-либо транспортной безопасности (например, NTLM).
Хорошо, поэтому я начинаю догадываться, что процесс интеграции сервисов 2005/2006 (который, вероятно, использовал разные механизмы аутентификации) приводит к этому изменению, которое мы видим.
Это, однако, имеет прямое влияние на код API в том смысле, что ранее вы указывали учетные данные для прокси-сервера клиента следующим образом:
proxy.ClientCredentials.ClientCredential = yourCredential;
Это больше не кажется актуальным. Я также заметил, что многие методы прокси-службы теперь ожидают экземпляр TrustedUserHeader
в качестве первого параметра. Например:
proxy.CreateFolder( yourTrustedUserHeader, folder , ... );
Из некоторой документации, похоже, он реализован как заголовок SOAP. Этот объект TrustedUserHeader содержит такие свойства, как UserName
, UserToken
, AnyAttr
и т. Д., Но я не уверен, каков правильный шаблон использования. К сожалению, документация MSDN в равной степени бесполезна, поскольку я не смог найти четкого руководства по этому вопросу, равно как и документация MSDN не использует WCF ServiceModel для доступа к сервисам.
Может ли кто-нибудь рассказать, как правильно теперь использовать новый интерфейс служб Reporting Services 2010?
Должен ли я больше не устанавливать свойство «ClientCredentials», а вместо этого создать и экземпляр «TrustedUserHeader»
Большое спасибо!
* Jaans 1037 *