Я пытаюсь подключиться к конечным точкам веб-службы 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>