有时 IOrganizationService 对象为空



我注意到,如果我尝试向另一个组织发出请求,通常会在具有大量记录的请求之后,IOrganizationService对象将在一段时间内为空。

CrmServiceClient conn = new CrmServiceClient(connectionString);
IOrganizationService service = (IOrganizationService)conn.OrganizationWebProxyClient != null ?
(IOrganizationService)conn.OrganizationWebProxyClient : (IOrganizationService)conn.OrganizationServiceProxy;    
OrganizationServiceContext ocontext = new OrganizationServiceContext(service);

就在我尝试更新 OrganizationServiceContext 时,调试器会抱怨该服务为空。

无论如何要避免这种情况?

CrmServiceClient

实现IOrganizationService本身。您不需要进入内部即可获得"真正的"服务。理论上,使用外部服务更好,因为它会自动处理令牌刷新。

根据我的经验,当内部服务null时,这是因为连接以某种方式失败。你看过conn.IsReadyconn.LastCrmError吗?

这是我到目前为止为了防止它爆炸而放置的内容,但是有时需要很长时间才能在就绪状态下重新创建连接。

public static CrmServiceClient getCrmServiceClient(string connectionString)
{
CrmServiceClient conn;
conn = new CrmServiceClient(connectionString);
while (conn.IsReady == false)
{
conn = new CrmServiceClient(connectionString);
if(conn.IsReady == false)
{
System.Threading.Thread.Sleep(2000);
}
}
return conn;
}

最新更新