14.12.2012, 19:54 | #1 |
Участник
|
Невозможность присоединения к Organization.svc из web-сервиса
В общем, есть web-сервис, часть методов которого работают как обычные отчёты (выгружают данные процедур отчёта напрямую из базы, в обход сервиса CRM), и есть методы, использующие Organization.svc.
Так вот все методы сервиса работают без проблем, если 1) Запускаются с локального IIS'а (нажатием на "Invoke" в браузере) 2) Работают из тестового приложения, которое деплоит сервис, подключенный из "соседнего" проекта в том же солюшене. (Вэб-ссылка добавляется "из проекта"). Но стоит подключить тот же самый веб-сервис из тестового приложения по ссылке на тот же локальный IIS (http://localhost:777/ReportsService.asmx), как он падает при попытке достучаться к Organization.svc со следующим ругательством: "System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.InvalidOperationException: Metadata contains a reference that cannot be resolved: 'http://servername/Organization.svc?wsdl'. ---> System.Net.WebException: The remote name could not be resolved: 'servername' at System.Net.HttpWebRequest.GetResponse() at System.ServiceModel.Description.MetadataExchangeClient.MetadataLocationRetriever.DownloadMetadata(TimeoutHelper timeoutHelper) at System.ServiceModel.Description.MetadataExchangeClient.MetadataRetriever.Retrieve(TimeoutHelper timeoutHelper)" При этом другие методы (работающие с базой напрямую, без подключения к CRM'у) продолжают работать как положено. Ради теста вынесла кусок кода, в котором происходит поломка, в отдельный веб-метод, захардкодив для верности строку подключения: Код: [WebMethod(Description = "Тестируем глючное место")] public void TestImpers() { IntPtr token = ((WindowsIdentity)User.Identity).Token; WindowsImpersonationContext context = WindowsIdentity.Impersonate(token); string imp = WindowsIdentity.GetCurrent().Name; Uri organizationUri = new Uri("http://____________Organization.svc"); var cred = new ClientCredentials(); //---вот на этой строчке ломается OrganizationServiceProxy _serviceproxy = new OrganizationServiceProxy(organizationUri, null, cred, null); } Может с IISом как-то колдовать по-хитрому надо? |
|
|
|