【问题标题】:Can I use the Dynamics CRM 4.0 SDK against a hosted IFD system?我可以针对托管的 IFD 系统使用 Dynamics CRM 4.0 SDK 吗?
【发布时间】:2010-07-29 13:00:14
【问题描述】:

我正在运行此代码(名称和安全细节被隐藏)。当我这样做时,我会得到未经授权的 401。凭据是托管服务器上用户的凭据。这对 IFD 系统是否可行?

var token = new CrmAuthenticationToken(); token.AuthenticationType = 0; token.OrganizationName = "我的组织";

    CrmService service = new CrmService();
    service.Url = "https://myorganisation.dynamicsgateway.com/mscrmservices/2007/crmservice.asmx";
    service.CrmAuthenticationTokenValue = token;
    service.Credentials = new NetworkCredential("bob.smith", "Password", "HOSTEDCRM");

    var request = new RetrieveMultipleRequest();
    request.Query = new QueryExpression
    {
        ColumnSet = new ColumnSet(new string[] { "name" }),
        EntityName = "account"
    };
    var response = service.Execute(request);

【问题讨论】:

    标签: dynamics-crm dynamics-crm-4


    【解决方案1】:

    我假设此代码在 CRM 网站之外?在这种情况下,您需要添加对发现服务的引用,正如 Mercure 上面指出的那样。您需要针对发现服务执行 RetrieveCrmTicketRequest 以获得用于连接到 Crm 服务的票证。

    在您的 CRM 身份验证令牌中,您需要将身份验证类型设置为 2 (IFD)。然后将令牌上的 CrmTicket 属性设置为您从 RetrieveCrmTicketResponse 获得的票证。

    我还根据该响应设置了 URL,但您可以继续对其进行硬编码。

    您将希望继续在服务上设置凭据。

    我使用单个用户连接到 CRM 并缓存该票证(到期日期在发现服务的响应中)。这样我就可以在未来的请求中绕过发现服务。有一个错误代码要查找以再次查找票证,但我手头没有。

    【讨论】:

      【解决方案2】:

      是的,有可能,您只是遗漏了一小部分,即 CrmAuthenticationToken.ExtractCrmAuthenticationToken。

      查看动态论坛http://social.microsoft.com/Forums/en-US/crmdevelopment/thread/81f8ba82-981d-40dd-893d-3add67436478上的精彩解释

      【讨论】:

      • 看起来不错,但我如何获得迪斯科服务的链接? Visual Studio 会看到 XML,但不会添加表明 dicovery 信息不可用的链接。
      • Disco 服务始终位于当前 URL 下的 /MSCRMServices/2007/SPLA/CrmDiscoveryService.asmx。您不想添加对它的引用,因为 ISV 目录下的所有页面都单独运行,它们在 CRM 应用程序池下运行,因此您无法添加对服务的引用。
      • 顺便说一句,如果您为 ASPx 页面创建了应用程序,则不能将其与 IFD 一起使用,您必须将 ASPx 页面放在 ISV 文件夹下,以便它们可以由 CRM 编译应用程序并集成在同一上下文中...
      猜你喜欢
      • 1970-01-01
      • 2014-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多