07.08.2014, 16:21 | #1 |
Участник
|
WinService -> Crm 2011 (IFD)
всем привет!
у меня есть windows service, который по расписанию запускает (назовем) плагины-сервисы, типа шедулер, наподобие AsyncService с бизнес-логикой, в каждом плагине - своя. плагин - просто dll-ка, class library с кодом в каждый плагин (ThreadPool + поток с dll-кой) отдается параметром экземпляр IOrganizationService (OrgServProxy который). Код: public static IOrganizationService OrganizationServiceAdmin { get { ClientCredentials credentials = new ClientCredentials(); credentials.UserName.UserName = ConfigurationManager.AppSettings["CrmUserLogin"]; credentials.UserName.Password = ConfigurationManager.AppSettings["CrmUserPassword"]; var s = new OrganizationServiceProxy(new Uri(ConfigurationManager.AppSettings["CrmServiceUrl"]), null, credentials, null ); return s; } } Стартуем винсервис, он загружает сборки своих плагинов и выстраевает очередь на запуск (через упомянутый ThreadPool). Пока "мучаюсь" - плагин всего один. Первый старт (приведу логи): Цитата:
2014-08-07 16:16:26,725 INFO : 07.08.2014 16:16:26 Запуск плагина по расписанию SPingBusPlugin
2014-08-07 16:16:27,365 INFO : 07.08.2014 16:16:27 Завершение плагина SPingBusPlugin, статус: True, сообщение: Обработанно: 07.08.2014 16:16:27 Цитата:
2014-08-07 16:16:47,365 INFO : 07.08.2014 16:16:47 Запуск плагина по расписанию SPingBusPlugin
2014-08-07 16:17:47,491 ERROR : Ошибка в процессе обработки плагина SPingBusPlugin : Metadata contains a reference that cannot be resolved: 'https://{org}.{domain}/XRMServices/2011/Organization.svc?wsdl'. 2014-08-07 16:17:47,491 ERROR : Процесс обработки плагина SPingBusPlugin будет остановлен! 2014-08-07 16:17:47,491 ERROR : Исключение: System.InvalidOperationException: Metadata contains a reference that cannot be resolved: 'https://{org}.{domain}/XRMServices/2011/Organization.svc?wsdl'. ---> System.Net.WebException: The operation has timed out at System.Net.HttpWebRequest.GetResponse() at System.ServiceModel.Description.MetadataExchangeClient.MetadataLocationRetriever.DownloadMetadata(TimeoutHelper timeoutHelper) at System.ServiceModel.Description.MetadataExchangeClient.MetadataRetriever.Retrieve(TimeoutHelper timeoutHelper) --- End of inner exception stack trace --- at System.ServiceModel.Description.MetadataExchangeClient.MetadataRetriever.Retrieve(TimeoutHelper timeoutHelper) at System.ServiceModel.Description.MetadataExchangeClient.ResolveNext(ResolveCallState resolveCallState) at System.ServiceModel.Description.MetadataExchangeClient.GetMetadata(MetadataRetriever retriever) at Microsoft.Xrm.Sdk.Client.ServiceMetadataUtility.RetrieveServiceEndpointMetadata(Type contractType, Uri serviceUri, Boolean checkForSecondary) at Microsoft.Xrm.Sdk.Client.ServiceConfiguration`1..ctor(Uri serviceUri, Boolean checkForSecondary) at Microsoft.Xrm.Sdk.Client.OrganizationServiceConfiguration..ctor(Uri serviceUri) at Microsoft.Xrm.Sdk.Client.ServiceConfigurationFactory.CreateConfiguration[TService](Uri serviceUri) at Microsoft.Xrm.Sdk.Client.ServiceProxy`1..ctor(Uri uri, Uri homeRealmUri, ClientCredentials clientCredentials, ClientCredentials deviceCredentials) at ......get_OrganizationServiceAdmin() in d:\job\......cs:line 450 почему второй проход не может зарезолвить ссылку на сервис Organization.svc? add: может ли это быть связано как-то с переделками в районе DNS/WINS серверов в AD? Последний раз редактировалось Eugene.Ostroukhov; 07.08.2014 в 16:46. |
|
08.08.2014, 09:35 | #2 |
Moderator
|
Ответ очевиден! Нужно подключиться Remote Debugger к процессу вашей службы и отладить ее! Обычно это помогает выявить причину не отгадывая.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
08.08.2014, 09:40 | #3 |
Moderator
|
Да, чуть не забыл. По куску кода, который вы привели сложно понять что происходит в вашем классе, однако есть ощущение, что вы используете один статический инстанс прокси сервиса CRM для всех подключений. Вы сказали, что у вас IFD, поэтому вам необходимо позаботится об обновлении токена. По умолчанию он живет всего час, но по многочисленным просьбам своих пользователей я увеличил время жизни до 8 часов для внутреннего адреса.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
08.08.2014, 10:07 | #4 |
Участник
|
Цитата:
Сообщение от Артем Enot Грунин
Да, чуть не забыл. По куску кода, который вы привели сложно понять что происходит в вашем классе, однако есть ощущение, что вы используете один статический инстанс прокси сервиса CRM для всех подключений. Вы сказали, что у вас IFD, поэтому вам необходимо позаботится об обновлении токена. По умолчанию он живет всего час, но по многочисленным просьбам своих пользователей я увеличил время жизни до 8 часов для внутреннего адреса.
падает на конструкторе OrganizationServiceProxy\ var s = new OrganizationServiceProxy да, мы тоже увеличили в АДФС жизнь токенов до 8 часов |
|
08.08.2014, 10:53 | #5 |
Участник
|
сменил учетку под которой работает винсервис - и все ок.
странная ботва.... |
|
12.08.2014, 10:28 | #6 |
Moderator
|
Интересно с какой на какую? У меня были аналогичные проблемы в IIS, но там это было связано с возможностями локального входа и имперсонации, которые были заблокированы администраторами в целях безопасности.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
12.08.2014, 10:55 | #7 |
Участник
|
есть пара доменных учеток, которые созданы для работы as admin в СРМ (сервисные учетки типа).
вот с одной из них на свою доменную. как это работало раньше - не очень представляю. либо админы что-то нахимичили в AD, и как обычно не говорят. с моей точки зрения разница между ними одна: я - лок. админ на сервере через доменную группу, а сервисные учетки - напрямую как пользователи добавлены. а что творится в AD - мне не говорят. |
|
|
|