我的目标很简单。使用Dynamics CRM 2013 API并给出url,用户名,密码和域,我如何检查这些值是否有效?需要验证CRM凭据
我有一个将使用API的自定义应用程序。我有一个设置屏幕,用户将输入URL,用户名,密码和域。我还有一个名为“测试连接”的按钮,它将验证它是否可以使用该信息进行连接。
这里是我用来创建连接的逻辑:
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行会引发异常。这工作正常与一个问题。假设用户输入了有效的凭证并成功单击了测试连接。现在让我们假设他们将密码更改为错误,然后单击测试连接。在这种情况下,它仍然是成功的。它似乎使用以前存在的连接。有没有办法消灭或清除以前的连接,以便当我尝试使用无效的值时,它会引发异常?
同样,我的总体目标是验证登录值。无论提供什么最好的方式来实现这一点,都是我所追求的。谢谢!
http://msdn.microsoft.com/en-us/library/hh675404.aspx?cs-save-lang=1&cs-lang=csharp #code-snippet-1 – Donal 2014-10-08 22:54:31