2015-06-24 14 views
6

Sto sviluppando un'applicazione C# che viene utilizzata per recuperare i dati da Dynamics CRM Online. Per convalidare il nome utente e la password di Dynamics CRM, sto utilizzando WhoAmIRequest. Funziona bene finché non si verifica lo scenario sottostante.Dynamics CRM SDK in C# connettersi con password non valida

1) Collegare Dynamics CRM con URL valido, nome utente e password.

2) Eliminare l'oggetto servizio organizzazione.

3) Ricollegare Dynamics CRM con URL valido, nome utente e password non valida.

In questo scenario anche WhoAmIRequest è stato eseguito correttamente. Ma dovrebbe fallire.

Di seguito è il codice che sto usando:

private void button6_Click(object sender, EventArgs e) 
    { 
     CrmConnection connection; 
     string url = "Url=https://mytest.crm.dynamics.com ;[email protected]; 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(); 
    } 

L'output del codice qui sopra mostra la casella 3 messaggio come

Accesso Successo

Accesso Successo

Accesso Successo

Ma dovrebbe mostrare come

Accesso Successo

Login Failed

Accesso Successo

Ho anche provato la risposta suggeriscono dalla Nicknow nel l'Need to validate CRM credentials domanda ma niente aiuta

Qualsiasi aiuto sarà molto apprezzato.

Grazie e saluti Venkatesan

+0

Quando provo a fare questo, mi chiede le credenziali, si ottiene un utente valido in quella risposta? – Sxntk

+0

Grazie per la risposta Sxntk, non è la credenziale valida che ho appena modificato per alcuni invalidi, ad esempio lo scopo quindi le credenziali che sto usando è limitato alla condivisione. È possibile creare un account di prova in dynamics crm a scopo di test. Fammi sapere se vuoi le credenziali. – user3270512

+0

Sto provando questo sul mio crm on premise, quindi quando dispongo il servizio e provo ad autenticare con una password errata viene visualizzata la directory attiva, quindi se non fornisco le credenziali corrette fallisce. – Sxntk

risposta

4

Il problema è nel vostro controllo qui:

if (userid == null)

UserId è un Guid, Guid è una struttura, una struttura è un tipo di valore, e un valore il tipo non sarà mai null, in modo che il controllo restituisca sempre false.

Vedi qui per maggiori informazioni Guid == null should not be allowed by the compiler

Io suggerirei di usare il seguente controllo invece:

if (userid == Guid.Empty)

+0

Grazie per il suggerimento James, ho provato il tuo suggerimento e ottenuto lo stesso risultato. Accetta la password non valida solo nel seguente scenario. 1) Connetti Dynamics CRM con URL valido, nome utente e password. 2) Smaltire l'oggetto del servizio dell'organizzazione. 3) Riconnettere Dynamics CRM con URL valido, nome utente e password non valida. Quando proviamo ad accedere con una password non valida al primo tentativo, mostra il messaggio di errore di autenticazione in modo corretto. – user3270512

Problemi correlati