2015-06-24 6 views
6

Ich entwickle eine C# -Anwendung, die zum Abrufen von Daten aus Dynamics CRM Online verwendet wird. Um den Benutzernamen und das Passwort von Dynamics CRM zu validieren, verwende ich die WhoAmIRequest. Es funktioniert gut, bis das folgende Szenario auftritt.Dynamics CRM SDK in C# verbinden mit ungültigem Passwort

1) Verbinden Sie Dynamics CRM mit gültiger URL, Benutzername und Passwort.

2) Entsorgen Sie das Organisationsserviceobjekt.

3) Verbinden Sie Dynamics CRM erneut mit gültiger URL, Benutzername und ungültigem Passwort.

In diesem Szenario wurde auch die WhoAmIRequest erfolgreich ausgeführt. Aber es sollte scheitern.

Unten ist der Code ich verwende:

private void button6_Click(object sender, EventArgs e) 
    { 
     CrmConnection connection; 
     string url = "Url=https://mytest.crm.dynamics.com ;[email protected]icrosoft.com; Password=goodpassword;"; 
     connection = CrmConnection.Parse(url); 
     OrganizationService orgService = new OrganizationService(connection); 
     Guid userid = ((WhoAmIResponse)orgService.Execute(new WhoAmIRequest())).UserId; 
     if (userid == null) 
      MessageBox.Show("Login Failed"); 
     else 
      MessageBox.Show("Login Success"); 
     orgService.Dispose(); 

     url = "Url=https://mytest.crm.dynamics.com ;[email protected]; Password=badpassword;"; 
     connection = CrmConnection.Parse(url); 
     orgService = new OrganizationService(connection); 
     userid = ((WhoAmIResponse)orgService.Execute(new WhoAmIRequest())).UserId; 
     if (userid == null) 
      MessageBox.Show("Login Failed"); 
     else 
      MessageBox.Show("Login Success"); 
     orgService.Dispose(); 

     url = "Url=https://mytest.crm.dynamics.com ;[email protected]; Password=goodpassowrd;"; 
     connection = CrmConnection.Parse(url); 
     orgService = new OrganizationService(connection); 
     userid = ((WhoAmIResponse)orgService.Execute(new WhoAmIRequest())).UserId; 
     if (userid == null) 
      MessageBox.Show("Login Failed"); 
     else 
      MessageBox.Show("Login Success"); 
     orgService.Dispose(); 
    } 

Die Ausgabe des obigen Code zeigt 3 Meldungsfeld als

Anmeldung Erfolg

Anmeldung Erfolg

Anmeldung Erfolg

Aber es sollte als

angezeigt werden

Anmeldung Erfolg

Anmeldung fehlgeschlagen

Anmeldung Erfolg

ich auch die Antwort versucht haben, deuten darauf hin, durch Nicknow in der Need to validate CRM credentials Frage, aber nichts hilft

Jede Hilfe wird sehr geschätzt.

Danke und Grüße Venkatesan

+0

Wenn ich versuche, dies zu tun, es fragen Sie mich für Anmeldeinformationen, erhalten Sie einen gültigen Benutzer in dieser Antwort? – Sxntk

+0

Danke für die Antwort Sxntk, Es ist nicht die gültige Berechtigung, die ich gerade zu einem ungültigen Beispiel Zweck geändert habe, daher ist die Berechtigung, die ich verwende, auf die Freigabe beschränkt. Sie können ein Testkonto in Dynamics CRM für Testzwecke erstellen. Lassen Sie mich wissen, wenn Sie die Anmeldeinformationen möchten. – user3270512

+0

Ich versuche dies auf meinem crm on premise, also, wenn ich den Dienst entsorge und versuche, mich mit einem falschen Passwort zu authentifizieren, erscheint das aktive Verzeichnis, wenn ich also die korrekten Zugangsdaten nicht schicke, schlägt es fehl. – Sxntk

Antwort

4

Das Problem ist hier in Ihrem Check:

if (userid == null)

UserId ist eine Guid, Guid eine Struktur ist, eine Struktur ist ein Werttyp, und ein Wert type wird nie null sein, so dass check immer false zurückgibt.

Sehen Sie hier für weitere Informationen Guid == null should not be allowed by the compiler

würde ich vorschlagen, stattdessen die folgende Prüfung mit:

if (userid == Guid.Empty)

+0

Danke für den Vorschlag James, ich habe Ihren Vorschlag ausprobiert und das gleiche Ergebnis erzielt. Es akzeptiert das ungültige Kennwort nur in dem folgenden Szenario. 1) Verbinden Sie Dynamics CRM mit gültiger URL, Benutzername und Passwort. 2) Entsorgen Sie das Organisations-Service-Objekt. 3) Verbinden Sie Dynamics CRM erneut mit der gültigen URL, dem Benutzernamen und dem ungültigen Passwort. Wenn wir versuchen, uns beim ersten Versuch mit einem ungültigen Passwort anzumelden, wird die entsprechende Fehlermeldung angezeigt. – user3270512