SSIS 2008 - подключение к веб-службе CRM 2011 с использованием компонента сценария - PullRequest
0 голосов
/ 27 июля 2011

Я пытаюсь подключиться к конечным точкам веб-службы CRM 2011 из компонента сценария SSIS 2008, который не может использовать сборки .Net 4. Это исключает .Net 4 SDK, поэтому я пытался создать прокси-класс, чтобы использовать его непосредственно для работы с WS 2011. Я получил код для работы, поместив этот прокси-класс в свою собственную сборку, но он полагается на чтение адреса WS из app.config (метод 1), который пакеты SSIS не могут использовать (эти настраиваемые пользователем атрибуты должны быть хранятся в переменных SSIS, чтобы клиент мог изменить их для работы в своей среде).

Я бы хотел выяснить, как читать данные app.config из пакета служб SSIS ...

Или мне нужно, чтобы что-то вроде метода 2 работало, но я не уверен, почему сервер выдает ошибку, которую он делает. Полномочия верны. Метод OrganizationServiceClient имеет несколько перегрузок, которые я пробовал, и ни одна из них не сработала. Это самое близкое, что я получил, чтобы это заработало. Может кто-нибудь сказать мне, что я делаю не так?

            //Method 1:  This code works but relies on pulling the endpoint address from the app.config  (SSIS can’t use this method)
        //OrganizationServiceClient serviceClient = new OrganizationServiceClient("CustomBinding_IOrganizationService");
        //serviceClient.ClientCredentials.Windows.ClientCredential = new System.Net.NetworkCredential() { Domain="MyDomain", UserName="administrator", Password="*****" };

//Method 2:  This method throws this error:
//Could not connect to https:// MYSERVER/XrmServices/2011/Organization.svc. TCP error code 10061: No connection could be made because the target machine actively refused it.
        string url = "https:// MYSERVER/XrmServices/2011/Organization.svc";
        BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.Transport);
        binding.MaxReceivedMessageSize = 2147483647;
        OrganizationServiceClient serviceClient = new OrganizationServiceClient(binding, new EndpointAddress(url));
        serviceClient.ClientCredentials.Windows.ClientCredential = new System.Net.NetworkCredential() { Domain=" MyDomain ", UserName="administrator", Password="******" };

            //this code is common between the two techniques above
        KeyValuePairOfstringanyType[] attributes = new KeyValuePairOfstringanyType[1];
        attributes[0] = new KeyValuePairOfstringanyType();
        attributes[0].key = "name";
        attributes[0].value = "MyTestAccount";

        Entity newAccount = new Entity();
        newAccount.LogicalName = "account";
        newAccount.Attributes = attributes;
        serviceClient.Create(newAccount);

Часть файла app.config ниже (используется описанным выше способом 1):

    <client>
        <endpoint address="http://MYSERVER/XRMServices/2011/Organization.svc"
            binding="customBinding" bindingConfiguration="CustomBinding_IOrganizationService"
            contract="IOrganizationService" name="CustomBinding_IOrganizationService">
            <identity>
                <userPrincipalName value="*******" />
            </identity>
        </endpoint>
    </client>

1 Ответ

2 голосов
/ 29 ноября 2011

Рассматривали ли вы использование подобного подхода в SSIS для чтения файла App.config и анализа документа XML для установки переменных в пакете SSIS?

http://www.sqlservercentral.com/articles/Integration+Services+(SSIS)/69550/

...