Показать сообщение отдельно
Старый 27.06.2017, 15:40   #8  
Skolos is offline
Skolos
Участник
 
56 / 13 (1) ++
Регистрация: 06.01.2016
Post
Разбор привел к следующему. После обновления нужно использовать другой тип подключения к CRM. Может кому пригодится, бросаю упрощенный код Из визуалки работает.
Код:
using Microsoft.Xrm.Tooling.Connector;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Messages;
using Microsoft.Xrm.Sdk.Query;
using System;
using System.Data;
using System.Linq;
using System.Text;

namespace CRMIntegration
{
    public class CRMIntegration
    {
         private IOrganizationService _orgService;
         private string connStr ="AuthType=Office365; Url=url; Username=username; Password=pass;"

        public bool Connect()
        {
            _orgService = connectToCrm();
            if (_orgService == null)
                return false;
            else
                return true;
        }

       private IOrganizationService connectToCrm()
        {
            try
            {
                CrmServiceClient conn = new CrmServiceClient(connStr);
                _orgService = (IOrganizationService)conn.OrganizationWebProxyClient != null ? (IOrganizationService)conn.OrganizationWebProxyClient : (IOrganizationService)conn.OrganizationServiceProxy;

                Error = _orgService == null ? conn.LastCrmError : "";

                return _orgService;
            }
            catch (Exception e)
            {
                Error = e.Message;
                return null;
            }
        }
    }
Возник следующий вопрос. После сборки проекта, пытаюсь присоединить новую dll а АХ. подсоединяю ее в GAC. Компиляция проекта проходить норм. AOS перезагрузил, референсы переподключил. Получил следующую ошибку: Не удалось загрузить файл или сборку "Microsoft.IdentityModel.Clients.ActiveDirectory, Version=2.22.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" либо одну из их зависимостей. Не удается найти указанный файл.

вот код класса в АХ
X++:
class Class1
{
}
public static void main()
{
    Class1::run();
}
public static void run()
{
    CRMIntegration.CRMIntegration conn;
    CRMIntegartionSettings set;
    str s;
    System.Exception ex;
    ;
    select firstOnly set;
    if(set)
    {
        conn = new CRMIntegration.CRMIntegration(set.URL, set.Username, set.Password);
        try
        {
            if(conn.Connect())
                info("ok");
            else
            {
                error("");

                s = conn.getLastError();
                info(strFmt("%1", s));
            }
        }
        catch (Exception::CLRError)
        {
            ex = CLRInterop::getLastException();
            
            info(ex.ToString());
        }

    }
    else
            error("");
}
Суть в том, что Microsoft.IdentityModel.Clients.ActiveDirectory, Version=2.22.0.0, нет в NuGet Package Manager. Попробовал подключать версии и выше и ниже, все равно просит Version=2.22.0.0,
Гугл мне не сильно помог. Что может быть? Попробовал на нескольких системах, везде такая же беда. Ну или как подключиться из АХ к CRM 365 напрямую?
Это моя первая интеграция AX - CRM может чего не знаю.
За это сообщение автора поблагодарили: mazzy (2).