| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			Плавающая ошибка при выполнении консольного приложения
			 
			
			Доброе время суток уважаемые форумчане. Обращаюсь к Вам с такой проблемой. Раз в сутки выполняется консольное приложение, которое обновляет данные в 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); ... Приложение обычно выполняется около 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) Прошу помощи в решении проблемы.  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Консультант-джедай 
		
			
	 | 
	
	
	
		
		
		
		 
			
			 Встречался давно с такой ошибкой. еще в 4 помоему. Если мне не изменяет память она была связана с большим количеством запросов выполняемых за одну "сессию" (или что-то вроде того). Решалась либо таймаутом после ~1000 запросов, либо прекращением работы программы после ~1000 запросов.
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	Крокодил, крокожу и буду крокодить. Человек человеку - волк , а зомби зомби - зомби. Экстремал и буду экстремать!   Блога
			 | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А что при этом пишется в трейс CRM?
		 
		
		
		
		
		
		
			
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от slivka_83
			 
 
			Встречался давно с такой ошибкой. еще в 4 помоему. Если мне не изменяет память она была связана с большим количеством запросов выполняемых за одну "сессию" (или что-то вроде того). Решалась либо таймаутом после ~1000 запросов, либо прекращением работы программы после ~1000 запросов. 
		
	 | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от 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); ... Приложение обычно выполняется около 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) Прошу помощи в решении проблемы. Для начала вам нужно посмотреть внутреннее исключение как написано в сообщение. От неё и надо отталкиваться. У меня тоже появляется похожая ошибка, в 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!!!  | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Заноза в заднице 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Вопрос по проблеме: от чего зависит количество шагов цикла, в котором выполняется Update? У нас была схожая ошибка и нам удалось установить зависимость количества шагов от появления ошибки. 
		
		
		
		
		
		
			На самом деле, есть зависимость объема передаваемых данных за одну сессию: чем меньше атрибутов обновлялось в ходе Update, тем больше шагов цикла проходило. Решение проблемы могло быть такое: все записи, которые надо апдейтить, были выгружены в массив и при проходе по массиву задавалось некое значение количества апдейтов, после которого происходило отключение сессии веб-сервиса и подключение вновь, после чего цикл возобновлялся с того элемента, на котором произошла остановка. 
				__________________ 
		
		
		
		
	Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков!  | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от Likefire
			 
 
			Вопрос по проблеме: от чего зависит количество шагов цикла, в котором выполняется Update? У нас была схожая ошибка и нам удалось установить зависимость количества шагов от появления ошибки. 
		
	На самом деле, есть зависимость объема передаваемых данных за одну сессию: чем меньше атрибутов обновлялось в ходе Update, тем больше шагов цикла проходило. Решение проблемы могло быть такое: все записи, которые надо апдейтить, были выгружены в массив и при проходе по массиву задавалось некое значение количества апдейтов, после которого происходило отключение сессии веб-сервиса и подключение вновь, после чего цикл возобновлялся с того элемента, на котором произошла остановка.  
		
				__________________ 
		
		
		
		
	Читайте SDK!!!  | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Konstantin Katsovich, 
		
		
		
		
		
		
		
	Да, внутреннее исключение именно такое. Попробую App Pool и решения по ссылкам. Не нашел каким образом менять параметр negotiateServiceCredential.  | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от Likefire
			 
 
			Вопрос по проблеме: от чего зависит количество шагов цикла, в котором выполняется Update? У нас была схожая ошибка и нам удалось установить зависимость количества шагов от появления ошибки. 
		
	На самом деле, есть зависимость объема передаваемых данных за одну сессию: чем меньше атрибутов обновлялось в ходе Update, тем больше шагов цикла проходило. Решение проблемы могло быть такое: все записи, которые надо апдейтить, были выгружены в массив и при проходе по массиву задавалось некое значение количества апдейтов, после которого происходило отключение сессии веб-сервиса и подключение вновь, после чего цикл возобновлялся с того элемента, на котором произошла остановка.  | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Я так и не до проверил это решение. по причине не нахождения в сервисе CRM этого проперти. Оно существует только в WSHttpBinding, а CRM используется CustomBindings. Если что-то накопаете буду рад. 
				__________________ 
		
		
		
		
	Читайте SDK!!!  | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от Konstantin Katsovich
			 
 
			Вспомнил 
		
	Я так и не до проверил это решение. по причине не нахождения в сервисе CRM этого проперти. Оно существует только в WSHttpBinding, а CRM используется CustomBindings. Если что-то накопаете буду рад. X++: public void CheckAuth() { if (DateTime.Compare(DateTime.Now, consoleStartTime.AddMinutes(counter * 7)) > 0) { _serviceProxy.Authenticate(); counter++; } } В итоге, моё консольное приложение отваливается в среднем один раз в месяц. 
				__________________ 
		
		
		
		
	CRM 5.0  | 
| 
	
 | 
| 
	
	 | 
	
		
  |