【发布时间】:2014-10-08 22:02:12
【问题描述】:
我的目标很简单。使用 Dynamics CRM 2013 API 并给定 url、用户名、密码和域,我如何检查这些值是否有效?
我有一个将使用 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 行将引发异常。这适用于一个问题。假设用户输入了有效凭据并成功单击了测试连接。现在假设他们将密码更改为错误,然后单击测试连接。在这种情况下,它仍然成功。它似乎使用了以前存在的连接。有没有办法清除或清除以前的连接,以便当我尝试使用无效值时会引发异常?
同样,我的总体目标是验证登录值。任何能提供实现这一目标的最佳方式的东西都是我所追求的。谢谢!
【问题讨论】:
标签: dynamics-crm