首页 文章

无法通过C#代码访问MS CRM Dynamic 365

提问于
浏览
2

尝试连接到MS CRM v9时出现问题

我用这段代码连接:

Uri organizationUri = new Uri(OrgUrl);
AuthenticationCredentials authCredentials = new AuthenticationCredentials();
authCredentials.ClientCredentials.UserName.UserName = UserName;
authCredentials.ClientCredentials.UserName.Password = Password;
OrganizationServiceProxy organizationProxy = new OrganizationServiceProxy(organizationUri, null, authCredentials.ClientCredentials, null);
organizationProxy.EnableProxyTypes();`
var _service = organizationProxy;

这是Exception消息

HResult = -2146233079消息=元数据包含无法解析的引用:'https://myOrg.api.crm4.dynamics.com/XRMServices/2011/Organization.svc?wsdl&sdkversion=9' . InnerException:HResult = -2146233079 Message =基础连接已关闭:发送时发生意外错误 . InnerException:HResult = -2146232800 Message =无法从传输连接读取数据:远程主机强制关闭现有连接 . InnerException:ErrorCode = 10054 HResult = -2147467259 Message =远程主机强行关闭现有连接

之前有没有人遇到这个问题 . PS:此代码在同一项目中运行

2 回答

  • 3

    看起来您需要更新SDK对新9.0 SDK引用的引用 . SDK不再单一下载,而是必须使用NuGet(https://blogs.msdn.microsoft.com/crm/2017/11/01/whats-new-for-customer-engagement-developer-documentation-in-version-9-0/

    不再需要单片SDK下载可能最大的单一变化是我们不再为所有文档,工具和示例代码提供单个下载包 . 展望未来,我们将提供单点式方法,而不是运送包含所有内容的单个包装,以便您可以根据需要下载单个物品 . 获取所需的装配和工具 . SDK程序集和工具将仅通过NuGet分发 . 我们将提供一个脚本,允许您从NuGet下载程序集和工具 . 请参阅从NuGet查找NuGet SDK包和下载工具的位置 . 自助离线内容生成 . 新的docs.microsoft.com站点允许您下载任何内容区域的PDF,以便您可以在离线时阅读和搜索文档 . 示例代码可用性 . 我们所有的示例代码都可以在msdn.microsoft.com或GitHub上找到 . code.msdn.microsoft.com网站专为示例代码而设计,提供良好的体验,并为我们提供更好的使用指标 . 只下载您需要的部分 . 我们在下载包中包含的各种资产将作为单独下载提供 . 这样,如果需要更新其中一个资产,我们可以在不释放整个SDK包的情况下更新它 .

    https://www.nuget.org/profiles/crmsdk包含您可能需要的所有SDK DLL的列表 . 特别是https://www.nuget.org/packages/Microsoft.CrmSdk.XrmTooling.CoreAssembly/包括我认为你真正需要的连接器 .

    您可以使用NuGet控制台中的以下命令将其添加到项目中

    Install-Package Microsoft.CrmSdk.XrmTooling.CoreAssembly -Version 9.0.0.7
    

    如果您不需要特定版本,则可以使用

    Install-Package Microsoft.CrmSdk.XrmTooling.CoreAssembly
    
  • 0

    我通常在 Xrm.Tooling.Connector 命名空间中使用带有连接字符串的CrmServiceClient .

    var svc = new CrmServiceClient(connectionString);

    请注意,CrmServiceClient有一个名为IsReady的布尔属性,这是检查它是否处于正确状态的好方法 .

    以下是各种环境类型的示例连接字符串 . 这些是硬编码的示例,但您也可以将它们添加到App.Config中,如我的答案here所示 .

    CRM 2016和Dynamics 365在线:

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

    集成安全性的内部部署:

    var connectionString="Url=http://myserver/AdventureWorksCycle;";
    

    凭证的内部部署:

    var connectionString="Url=http://myserver/AdventureWorksCycle; Domain=mydomain; Username=administrator; Password=password; AuthType=AD;";
    

    CRM 2016之前的内部IFD:

    var connectionString="Url=https://contoso.litware.com; Username=someone@litware.com; Password=password; AuthType=IFD;";
    

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

    var connectionString="ServiceUri=https://contoso.litware.com/contoso; Domain=contoso; Username=contoso\administrator; Password=password; AuthType=IFD; LoginPrompt=Never;";`
    

相关问题