【问题标题】:Can't Access MS CRM Dynamic 365 by C# code无法通过 C# 代码访问 MS CRM Dynamic 365
【发布时间】:2018-01-16 10:37:32
【问题描述】:

我在尝试连接到 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;

这是异常消息

HResult=-2146233079 Message=元数据包含一个引用 无法解决: 'https://myOrg.api.crm4.dynamics.com/XRMServices/2011/Organization.svc?wsdl&sdkversion=9'。 内部异常: H结果=-2146233079 Message=底层连接已关闭:发送时发生意外错误。 内部异常: H结果=-2146232800 消息=无法从传输连接读取数据:现有连接被远程主机强行关闭。 内部异常: 错误代码=10054 H结果=-2147467259 Message=一个现有的连接被远程主机强行关闭

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

【问题讨论】:

    标签: c# dynamics-crm console-application office365 dynamics-365


    【解决方案1】:

    您似乎需要将 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 SDK 包和从 NuGet 下载工具。

    自助离线内容生成。新的 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
    

    【讨论】:

    • 澄清点:是否有令人信服的理由明确说明 Nuget 包版本?
    • 感谢您重播 Mauro,我已经在使用此版本 9.0.0.7 但仍然存在问题
    • @Basic nope - 它只是特定页面中的示例:)
    【解决方案2】:

    我一般在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 及更高版本 (v8.0+) 的本地 IFD

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-08
      相关资源
      最近更新 更多