Моя цель проста. Используя API Dynamics CRM 2013 и заданный URL-адрес, имя пользователя, пароль и домен, как я могу проверить, что значения действительны?Необходимо проверить достоверность учетных данных CRM
У меня есть собственное приложение, которое будет использовать API. У меня есть экран настройки, где пользователь вводит URL, имя пользователя, пароль и домен. У меня также есть кнопка «Test Connection», которая проверит, что она может подключиться с использованием этой информации.
Вот логика, я использую для создания соединения:
string connectionString;
if (_crmDomain != "")
connectionString = string.Format(@"Url={0}; Username={1}\{2}; Password={3}", url, domain, userName, password);
else
connectionString = string.Format(@"Url={0}; Username={1}; Password={2}", url, userName, password);
var css = new ConnectionStringSettings("CRMConnectionString", connectionString);
var cn = new CrmConnection(css);
var service = new OrganizationService(cn);
Вопрос заключается в том, что даже если учетные данные являются недействительными (возможно, неправильный пароль), линия, которая создает новый OrganizationService работает отлично. Есть ли способ проверить, что он будет работать, когда в конечном итоге будет выполнен фактический вызов?
Прямо сейчас я обойду его, сделав фиктивный вызов. Это заставляет его создавать соединение. Вот что я делаю:
var request = new RetrieveAllEntitiesRequest();
request.EntityFilters = EntityFilters.Entity;
service.Execute(request);
Если учетные данные не являются действительными, то service.Execute линия бросает исключение. Это прекрасно работает с одной проблемой. Предположим, что пользователь ввел действительные учетные данные и успешно нажал Test Connection. Теперь предположим, что они меняют пароль, чтобы быть неправильным, и нажмите «Проверить соединение». В этом случае он все еще преуспевает. Похоже, что используется ранее существующее соединение. Есть ли способ стереть или очистить предыдущее соединение, чтобы при попытке с недопустимыми значениями оно выдало исключение?
Опять же, моя общая цель - проверить значения входа. Независимо от того, что обеспечит наилучший способ выполнения этого, я буду после. Благодаря!
http://msdn.microsoft.com/en-us/library/hh675404.aspx?cs-save-lang=1&cs-lang=csharp # code-snippet-1 – Donal