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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.12.2012, 09:22   #1  
ma-lex is offline
ma-lex
Участник
 
9 / 10 (1) +
Регистрация: 20.07.2012
Плавающая ошибка при выполнении консольного приложения
Доброе время суток уважаемые форумчане. Обращаюсь к Вам с такой проблемой. Раз в сутки выполняется консольное приложение, которое обновляет данные в CRM (2011). Код примерно такой:
X++:
ClientCredentials credentials = new ClientCredentials();
credentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultNetworkCredentials;
Uri uri = new Uri("http://localhost:5555/rbrcrm/XRMServices/2011/Organization.svc");
OrganizationServiceProxy proxy = new OrganizationServiceProxy(uri, null, credentials, null);
// This statement is required to enable early-bound type support.
proxy.ServiceConfiguration.CurrentServiceEndpoint.Behaviors.Add(new ProxyTypesBehavior());
IOrganizationService service = (IOrganizationService)proxy;
...
Entity vCon = new Entity("contact");
...
service.Update(vCon);
...
service.Update(vCon) - выполняется в цикле.

Приложение обычно выполняется около 3х часов. Примерно в 70% программа вылетает с ошибкой, спустя значительное время после выполнения, на строке service.Update(vCon);
Причем, судя по логам, программа пытается выполнить эту строчку минут 30-40, потом выходит сообщение об ошибке:

X++:
System.ServiceModel.Security.MessageSecurityException:            .     .  . ---> System.ServiceModel.FaultException:        .    .
 ---      ---

Server stack trace: 
    System.ServiceModel.Channels.SecurityChannelFactory`1.SecurityRequestChannel.ProcessReply(Message reply, SecurityProtocolCorrelationState correlationState, TimeSpan timeout)
    System.ServiceModel.Channels.SecurityChannelFactory`1.SecurityRequestChannel.Request(Message message, TimeSpan timeout)
    System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
    System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
    System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

Exception rethrown at [0]: 
    System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
    System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
    Microsoft.Xrm.Sdk.IOrganizationService.Update(Entity entity)
    Microsoft.Xrm.Sdk.Client.OrganizationServiceProxy.UpdateCore(Entity entity)
Есть дни, когда весь процесс проходит без ошибок (около 30%).
Прошу помощи в решении проблемы.
Старый 12.12.2012, 10:28   #2  
slivka_83 is offline
slivka_83
Консультант-джедай
Аватар для slivka_83
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
1,683 / 374 (16) ++++++
Регистрация: 18.12.2008
Адрес: default city
Цитата:
Сообщение от ma-lex Посмотреть сообщение
service.Update(vCon) - выполняется в цикле.

Приложение обычно выполняется около 3х часов.
Встречался давно с такой ошибкой. еще в 4 помоему. Если мне не изменяет память она была связана с большим количеством запросов выполняемых за одну "сессию" (или что-то вроде того). Решалась либо таймаутом после ~1000 запросов, либо прекращением работы программы после ~1000 запросов.
__________________
Крокодил, крокожу и буду крокодить.
Человек человеку - волк , а зомби зомби - зомби.
Экстремал и буду экстремать!
Блога
Старый 12.12.2012, 10:37   #3  
g.Naukovych is offline
g.Naukovych
Участник
MCBMSS
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
405 / 130 (5) +++++
Регистрация: 23.03.2011
А что при этом пишется в трейс CRM?
__________________
Мой блог https://procrm.tv
Старый 12.12.2012, 10:46   #4  
ma-lex is offline
ma-lex
Участник
 
9 / 10 (1) +
Регистрация: 20.07.2012
Цитата:
Сообщение от g.Naukovych Посмотреть сообщение
А что при этом пишется в трейс CRM?
Трейс пока не включал. Попробую, отпишусь.
Старый 12.12.2012, 10:48   #5  
ma-lex is offline
ma-lex
Участник
 
9 / 10 (1) +
Регистрация: 20.07.2012
Цитата:
Сообщение от slivka_83 Посмотреть сообщение
Встречался давно с такой ошибкой. еще в 4 помоему. Если мне не изменяет память она была связана с большим количеством запросов выполняемых за одну "сессию" (или что-то вроде того). Решалась либо таймаутом после ~1000 запросов, либо прекращением работы программы после ~1000 запросов.
Странно, что не всегда такая ошибка получается. По идее это не одна транзакция и каждая запись обновляется "сразу же".
Старый 12.12.2012, 12:27   #6  
Konstantin Katsovich is offline
Konstantin Katsovich
Участник
Аватар для Konstantin Katsovich
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
243 / 57 (2) ++++
Регистрация: 22.10.2008
Адрес: Israel
Цитата:
Сообщение от ma-lex Посмотреть сообщение
Доброе время суток уважаемые форумчане. Обращаюсь к Вам с такой проблемой. Раз в сутки выполняется консольное приложение, которое обновляет данные в CRM (2011). Код примерно такой:
X++:
ClientCredentials credentials = new ClientCredentials();
credentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultNetworkCredentials;
Uri uri = new Uri("http://localhost:5555/rbrcrm/XRMServices/2011/Organization.svc");
OrganizationServiceProxy proxy = new OrganizationServiceProxy(uri, null, credentials, null);
// This statement is required to enable early-bound type support.
proxy.ServiceConfiguration.CurrentServiceEndpoint.Behaviors.Add(new ProxyTypesBehavior());
IOrganizationService service = (IOrganizationService)proxy;
...
Entity vCon = new Entity("contact");
...
service.Update(vCon);
...
service.Update(vCon) - выполняется в цикле.

Приложение обычно выполняется около 3х часов. Примерно в 70% программа вылетает с ошибкой, спустя значительное время после выполнения, на строке service.Update(vCon);
Причем, судя по логам, программа пытается выполнить эту строчку минут 30-40, потом выходит сообщение об ошибке:

X++:
System.ServiceModel.Security.MessageSecurityException:            .     .  . ---> System.ServiceModel.FaultException:        .    .
 ---      ---

Server stack trace: 
    System.ServiceModel.Channels.SecurityChannelFactory`1.SecurityRequestChannel.ProcessReply(Message reply, SecurityProtocolCorrelationState correlationState, TimeSpan timeout)
    System.ServiceModel.Channels.SecurityChannelFactory`1.SecurityRequestChannel.Request(Message message, TimeSpan timeout)
    System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
    System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
    System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

Exception rethrown at [0]: 
    System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
    System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
    Microsoft.Xrm.Sdk.IOrganizationService.Update(Entity entity)
    Microsoft.Xrm.Sdk.Client.OrganizationServiceProxy.UpdateCore(Entity entity)
Есть дни, когда весь процесс проходит без ошибок (около 30%).
Прошу помощи в решении проблемы.

Для начала вам нужно посмотреть внутреннее исключение как написано в сообщение.
От неё и надо отталкиваться.

У меня тоже появляется похожая ошибка, в Windows Services.
Код:
An unsecured or incorrectly secured fault was received from the other party. See the inner FaultException for the fault code and detail.

Server stack trace: 
   at System.ServiceModel.Channels.SecurityChannelFactory`1.SecurityRequestChannel.ProcessReply(Message reply, SecurityProtocolCorrelationState correlationState, TimeSpan timeout)
   at System.ServiceModel.Channels.SecurityChannelFactory`1.SecurityRequestChannel.Request(Message message, TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
   at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
Моё внутренне исключение такое.
Код:
Inner Exception:
The security context token is expired or is not valid. The message was not processed.
А что у Вас?

В трайсе CRM я ни чего не нашел на эту тему.
Судя по стэк трейсу эта ошибка возникает еще до попадания в CRM. (то есть в .net)

Опытных путем было установлено, что у меня это происходит только в том случае, если я начинаю использовать больше одного процесса в App Pool.
Когда ставишь один процесс ошибка пропадает. так и живу пока.


Так же мной было опробовано два решения, но для меня безрезультатно.
http://rajeevpentyala.wordpress.com/...local_machine/

http://pragmatismismymethodology.blo...exception.html

Удачи.
__________________
Читайте SDK!!!
Старый 12.12.2012, 12:40   #7  
Likefire is offline
Likefire
Заноза в заднице
Аватар для Likefire
MCBMSS
Лучший по профессии 2009
 
547 / 50 (3) ++++
Регистрация: 22.10.2007
Адрес: Москва
Записей в блоге: 1
Вопрос по проблеме: от чего зависит количество шагов цикла, в котором выполняется Update? У нас была схожая ошибка и нам удалось установить зависимость количества шагов от появления ошибки.
На самом деле, есть зависимость объема передаваемых данных за одну сессию: чем меньше атрибутов обновлялось в ходе Update, тем больше шагов цикла проходило. Решение проблемы могло быть такое: все записи, которые надо апдейтить, были выгружены в массив и при проходе по массиву задавалось некое значение количества апдейтов, после которого происходило отключение сессии веб-сервиса и подключение вновь, после чего цикл возобновлялся с того элемента, на котором произошла остановка.
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков!
Старый 12.12.2012, 12:45   #8  
Konstantin Katsovich is offline
Konstantin Katsovich
Участник
Аватар для Konstantin Katsovich
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
243 / 57 (2) ++++
Регистрация: 22.10.2008
Адрес: Israel
Цитата:
Сообщение от Likefire Посмотреть сообщение
Вопрос по проблеме: от чего зависит количество шагов цикла, в котором выполняется Update? У нас была схожая ошибка и нам удалось установить зависимость количества шагов от появления ошибки.
На самом деле, есть зависимость объема передаваемых данных за одну сессию: чем меньше атрибутов обновлялось в ходе Update, тем больше шагов цикла проходило. Решение проблемы могло быть такое: все записи, которые надо апдейтить, были выгружены в массив и при проходе по массиву задавалось некое значение количества апдейтов, после которого происходило отключение сессии веб-сервиса и подключение вновь, после чего цикл возобновлялся с того элемента, на котором произошла остановка.
Я как то попытался объяснить причины здесь
__________________
Читайте SDK!!!
Старый 12.12.2012, 12:50   #9  
ma-lex is offline
ma-lex
Участник
 
9 / 10 (1) +
Регистрация: 20.07.2012
Konstantin Katsovich,
Да, внутреннее исключение именно такое.
Попробую App Pool и решения по ссылкам. Не нашел каким образом менять параметр negotiateServiceCredential.
Старый 12.12.2012, 12:56   #10  
ma-lex is offline
ma-lex
Участник
 
9 / 10 (1) +
Регистрация: 20.07.2012
Цитата:
Сообщение от Likefire Посмотреть сообщение
Вопрос по проблеме: от чего зависит количество шагов цикла, в котором выполняется Update? У нас была схожая ошибка и нам удалось установить зависимость количества шагов от появления ошибки.
На самом деле, есть зависимость объема передаваемых данных за одну сессию: чем меньше атрибутов обновлялось в ходе Update, тем больше шагов цикла проходило. Решение проблемы могло быть такое: все записи, которые надо апдейтить, были выгружены в массив и при проходе по массиву задавалось некое значение количества апдейтов, после которого происходило отключение сессии веб-сервиса и подключение вновь, после чего цикл возобновлялся с того элемента, на котором произошла остановка.
Количество шагов до возникновения проблемы каждую ночь совершенно разное (38 тыс, 80 тыс, 180 тыс.....). На самом деле это несколько циклов по нескольким сущностям и если в промежутки между ними делать отключение сессии...?
Старый 12.12.2012, 13:07   #11  
Konstantin Katsovich is offline
Konstantin Katsovich
Участник
Аватар для Konstantin Katsovich
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
243 / 57 (2) ++++
Регистрация: 22.10.2008
Адрес: Israel
Цитата:
Сообщение от ma-lex Посмотреть сообщение
Konstantin Katsovich,
Да, внутреннее исключение именно такое.
Попробую App Pool и решения по ссылкам. Не нашел каким образом менять параметр negotiateServiceCredential.
Вспомнил

Я так и не до проверил это решение. по причине не нахождения в сервисе CRM этого проперти.

Оно существует только в WSHttpBinding, а CRM используется CustomBindings.

Если что-то накопаете буду рад.
__________________
Читайте SDK!!!
Старый 29.01.2013, 09:22   #12  
webmaster is offline
webmaster
Участник
 
19 / 10 (1) +
Регистрация: 28.06.2011
Адрес: Новосибирск
Цитата:
Сообщение от Konstantin Katsovich Посмотреть сообщение
Вспомнил

Я так и не до проверил это решение. по причине не нахождения в сервисе CRM этого проперти.

Оно существует только в WSHttpBinding, а CRM используется CustomBindings.

Если что-то накопаете буду рад.
Справился с такой проблемой написанием функции переподключения к сервису по таймеру.
X++:
        public void CheckAuth()
        {
            if (DateTime.Compare(DateTime.Now, consoleStartTime.AddMinutes(counter * 7)) > 0) { _serviceProxy.Authenticate(); counter++; }
        }
Вызываю эту функцию перед выполнением _serviceProxy.Update(something)
В итоге, моё консольное приложение отваливается в среднем один раз в месяц.
__________________
CRM 5.0
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Ошибка создания продукта сделки при выполнении плагина. drongo Dynamics CRM: Разработка 5 12.10.2012 14:27
Ошибка открытия приложения у пользователей Camena Dynamics CRM: Администрирование 11 30.08.2012 15:20
Ошибка при выполнении бизнес-процесса "Не удалось загрузить сборку подключаемого модуля" focus Dynamics CRM: Функционал 13 29.09.2010 11:45
Ошибка открытия приложения ms crm Camena Dynamics CRM: Администрирование 3 04.06.2010 18:57
Ошибка авторизации при выполнении запроса Dark_Angel Dynamics CRM: Разработка 0 03.09.2009 17:23

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 00:42.