CRM 2015 +元数据包含无法解析的引用

时间:2016-04-16 14:13:43

标签: dynamics-crm dynamics-crm-2015

我创建了一个控制台应用程序,它连接到CRM并更新XYZ实体中的字段。

连接到CRM的代码是 -

ClientCredentials credential = new ClientCredentials();
credential.UserName.UserName =user;
credential.UserName.Password = password;

OrganizationServiceProxy proxy = new OrganizationServiceProxy(new Uri(crmEnvironments.ElementAt(currentEnvironment).URL), null, credential, null);

它最初很好地连接到CRM,但在某个时候它会抛出下面提到的错误 -

  

"元数据包含无法解析的引用"。

     

内部异常:"无法连接到远程服务器"

在谷歌做了一些研究后,我做了以下事情

在Connect CRM中插入以下代码行 -

ServicePointManager.ServerCertificateValidationCallback = delegate(object s, X509Certificate certificate, X509Chain chain,SslPolicyErrors sslPolicyErrors) { return true; };

在Appconfig文件中插入以下内容 -

<system.net>
 <defaultProxy useDefaultCredentials="true">
 </defaultProxy>
 </system.net>

但是,错误仍然存​​在,处理完一些记录后连接失败并抛出上述错误。

请帮忙。

3 个答案:

答案 0 :(得分:0)

您有什么样的部署?是OnPremise使用Active Directory还是IFD?

只是说因为你只需要ServerCertificateValidationCallback,如果您通过SSL使用自签名证书托管CRM,而您实际上正在使用上述方法绕过该证书。

如果它处理某些记录然后停止,那么我敢打赌ServerCertificateValidationCallback与此无关。例如,可能是CRM因为超出了超时而丢弃了连接。

您可以在CRM的web.config中增加OrganisationService超时。

查看更多详情here

如果可能的话,另一个更好的选择是将你的个人调用包装成ExecuteMultipleRequest,这样你就不会对服务进行N次调用,只需要一个大的调用(它将节省网络带宽和连接问题)。

答案 1 :(得分:0)

连接控制台应用程序的另一种方法是CrmServiceClient,它位于Microsoft.Xrm.Tooling.Connector库中。

使用NuGet,您可以获得Microsoft.CrmSdk.XrmTooling.CoreAssembly套餐,并且您将参加比赛。

以下是其他一些有用的链接:

Build Windows client applications using the XRM tools

Sample: Quick start for XRM Tooling API

以下是各种连接字符串示例:

CRM 2016和Dynamics 365在线:

<add name="dev26" connectionString="Url=https://dev26.crm.dynamics.com; Username=user@dev26.onmicrosoft.com; Password=Pass; AuthType=Office365" />

内部集成安全性:

<add name="prod" connectionString="Url=http://myserver/AdventureWorksCycle;"/>

凭证的内部部署:

<add name="prod" connectionString="Url=http://myserver/AdventureWorksCycle; Domain=mydomain; Username=administrator; Password=password; AuthType=AD;"/>

CRM 2016之前的内部IFD:

<add name="prod" connectionString="Url=https://contoso.litware.com; Username=someone@litware.com; Password=password; AuthType=IFD;"/>

CRM 2016及更高版本的内部部署IFD(v8.0 +)

<add name="prod" connectionString="ServiceUri=https://contoso.litware.com/contoso; Domain=contoso; Username=contoso\administrator; Password=password; AuthType=IFD; LoginPrompt=Never;" />

答案 2 :(得分:0)

我知道问这个问题已有几年了;但我今天遇到了这个问题,试图连接到CRM 365 Online。

我在尝试连接时遇到了一个空对象错误 - 原因是我没有在app.config文件中配置我的代理凭据。