AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Разработка
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.12.2012, 19:54   #1  
Violette is offline
Violette
Участник
Аватар для Violette
 
18 / 10 (1) +
Регистрация: 06.11.2012
Адрес: Москва
Невозможность присоединения к 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ом как-то колдовать по-хитрому надо?
Старый 14.12.2012, 22:25   #2  
Konstantin Katsovich is offline
Konstantin Katsovich
Участник
Аватар для Konstantin Katsovich
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
243 / 57 (2) ++++
Регистрация: 22.10.2008
Адрес: Israel
Цитата:
Сообщение от Violette Посмотреть сообщение
В общем, есть 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ом как-то колдовать по-хитрому надо?
Хотел бы уточнить вопрос.
Вы хотите сказать, что ваше решение, которое обращается к сервису срм работает только локально? (то есть когда находится физически на том же сервере что и срм)


Обычная ссылка веб клиента открывается с удаленного сервера?
Ссылка сервиса отрывается с удаленного сервера?
Если используете в ссылке имя сервера, попробуйте вместо имени прописать ip.
Попробуйте отключить firewall на сервере срм.
__________________
Читайте SDK!!!
Старый 17.12.2012, 12:58   #3  
Violette is offline
Violette
Участник
Аватар для Violette
 
18 / 10 (1) +
Регистрация: 06.11.2012
Адрес: Москва
Цитата:
Сообщение от Konstantin Katsovich Посмотреть сообщение
Хотел бы уточнить вопрос.
Вы хотите сказать, что ваше решение, которое обращается к сервису срм работает только локально? (то есть когда находится физически на том же сервере что и срм)
Ссылка на cервис CRM всегда одна и та же, и во всех случаях к самому CRM подключаюсь удалённо со своей машины.

Различие в способах вызова самого решения (моего вэб-сервиса, вызывающего сервис CRM).

1) Мой сервис запускается прямо в браузере с локального IIS'а (на моей машине, отличной от той, на которой запускается CRM) и его методы доступны для вызова через INVOKE. В этом случае проверка проходит успешно.


2) Проект моего сервиса и считывающий его тестовый проект находятся в одном солюшне. Ссылка смервиса добавляется в Service References тестового проекта как "Discover -> Services in Solution". В этом случае студия сама решает, куда захостить сервис, и запускает его не с IIS'а (там он стабильно висит на localhost:777), а откуда-то из файловой системы c адреса localhost:1228, который в следующий раз может быть и другим (таким, каким его назначит вижуал студия). В этом случае тоже работает.


3) А вот если выкину из солюшна проект сервиса и подключу свой веб-сервис к Service References тестового проекта через его вызов с IIS'а (путём прописывания адреса localhost:777), то сам сервис и его методы, работающие напрямую с базой, работать будут, но те методы, которые содержат в себе подключение к Organization.svc, упадут с ошибкой "Metadata contains a reference that cannot be resolved: 'http://servername/Organization.svc?wsdl'". При том, что в двух других выше описанных случаях этот момент замечательно отрабатывал.

Вот.((
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
crminthefield: Building Multi-Purpose Silverlight Web Resources in Dynamics CRM 2011 Blog bot Dynamics CRM: Blogs 0 28.01.2012 02:16
Microsoft Dynamics CRM Team Blog: List Web Part for Microsoft Dynamics CRM 4.0 Deployment Scenarios Blog bot Dynamics CRM: Blogs 0 30.01.2009 22:05
Microsoft Dynamics CRM Team Blog: List Web Part for Microsoft Dynamics CRM 4.0: Understanding Connections Blog bot Dynamics CRM: Blogs 0 20.01.2009 02:07
Microsoft Dynamics CRM Team Blog: Deployment Manager: Import Organization vs. Edit Organization Blog bot Dynamics CRM: Blogs 0 16.10.2008 06:24
Вызов web-сервиса из dynamics crm Evgenia_f Dynamics CRM: Разработка 11 26.08.2008 09:33

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 20:07.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.