我可以针对托管的IFD系统使用Dynamics CRM 4.0 SDK吗?

时间:2010-07-29 13:00:15

标签: dynamics-crm dynamics-crm-4

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

var token = new CrmAuthenticationToken();         token.AuthenticationType = 0;         token.OrganizationName =“myorganisation”;

    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);

2 个答案:

答案 0 :(得分:2)

我认为此代码不属于CRM网站?在这种情况下,您将需要添加对发现服务的引用,如美居指出的那样。您将需要针对发现服务执行RetrieveCrmTicketRequest以获得适合连接到Crm服务的票证。

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

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

您需要继续在服务上设置凭据。

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

答案 1 :(得分:1)

是的,有可能,你只缺少一些小块,CrmAuthenticationToken.ExtractCrmAuthenticationToken。

在动态论坛http://social.microsoft.com/Forums/en-US/crmdevelopment/thread/81f8ba82-981d-40dd-893d-3add67436478

上查看这个伟大的解释