我的目標很簡單。使用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