Hace unas semanas me encontraba un error bastante interesante (de los hacen romperte un poco la cabeza
) llamando a los servicios de CRM, concretamente usando el mensaje RetrieveMultiple. Basicamente, un servicio WCF personalizado llamaba a aquellos y repentinamente nos encontrabamos un error similar al descrito en el siguiente MSDN Forum post

Después de darle unas cuantas vueltas, resultó ser un problema multi-thread relacionado con IServiceConfiguration y IServiceManagement, los cuales son internamente compartidos. IServiceConfiguration no es"safe thread". De hecho, importante recordar que early-bounds types tampoco lo son. (Darle un ojo al siguiente artículo: http://technet.microsoft.com/en-us/library/gg326004.aspx)
Finalmente, un buen compromiso y simple solución para resolver este problema fue un pequeño ajuste en el objeto de conexión:
CrmConnection crmConnection = new CrmConnection("myCRMConnection"); crmConnection.ServiceConfigurationInstanceMode = ServiceConfigurationInstanceMode.PerInstance; using (CRMContext serviceContext = new CRMContext(crmConnection)) { … }
ServiceConfigurationInstanceMode.PerInstance fue la cable.
En relación a este tema, recomiendo leer el siguiente artículo, publicado en una de las últimas SDKs (5.0.12):