2015-06-24 47 views
6

Tôi đang phát triển một ứng dụng C# được sử dụng để truy xuất dữ liệu từ Dynamics CRM Online. Để xác thực Tên người dùng và Mật khẩu của Dynamics CRM, tôi đang sử dụng WhoAmIRequest. Nó hoạt động tốt cho đến khi các kịch bản dưới đây xảy ra.Dynamics CRM SDK trong C# kết nối với Mật khẩu không hợp lệ

1) Kết nối Dynamics CRM với URL hợp lệ, Tên người dùng và Mật khẩu.

2) Vứt bỏ đối tượng dịch vụ tổ chức.

3) Kết nối lại Dynamics CRM với URL hợp lệ, Tên người dùng và Mật khẩu không hợp lệ.

Trong trường hợp này, WhoAmIRequest đã được thực hiện thành công. Nhưng nó sẽ thất bại.

Dưới đây là đoạn code tôi đang sử dụng:

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(); 
    } 

Sản lượng mã trên cho thấy hộp 3 thông điệp như

Đăng nhập thành công

Đăng nhập thành công

Đăng nhập thành công

Nhưng nó sẽ hiển thị là

Đăng nhập thành công

Login Failed

Đăng nhập thành công

Tôi cũng đã thử các câu trả lời gợi ý bởi Nicknow trong các Need to validate CRM credentials Câu hỏi nhưng không giúp

Bất kỳ trợ giúp sẽ được đánh giá cao.

Cảm ơn và chúc Venkatesan

+0

Khi tôi cố gắng để làm điều này, nó hỏi tôi cho thông tin, bạn có được một người dùng hợp lệ trong phản ứng đó? – Sxntk

+0

Cảm ơn bạn đã trả lời Sxntk, Đây không phải là chứng chỉ hợp lệ mà tôi vừa sửa đổi thành một số không hợp lệ cho mục đích ví dụ, do đó ủy nhiệm mà tôi đang sử dụng bị hạn chế chia sẻ. Bạn có thể tạo một tài khoản dùng thử trong động lực crm cho mục đích thử nghiệm. Hãy cho tôi biết nếu bạn muốn thông tin xác thực. – user3270512

+0

Tôi đang thử tính năng này trên tiền đề, vì vậy khi tôi bỏ dịch vụ và cố gắng xác thực bằng một thư mục hoạt động sai mật khẩu hiện lên, vì vậy nếu tôi không cung cấp thông tin xác thực chính xác thì nó không thành công. – Sxntk

Trả lời

4

Vấn đề là trong tầm kiểm soát của bạn ở đây:

if (userid == null)

UserId là một Guid, Guid là một cấu trúc, một cấu trúc là một kiểu giá trị, và một giá trị loại sẽ không bao giờ là null, để kiểm tra luôn trả về false.

Xem ở đây để biết thêm thông tin Guid == null should not be allowed by the compiler

tôi sẽ đề nghị sử dụng séc sau thay vì:

if (userid == Guid.Empty)

+0

Cảm ơn James đề xuất, tôi đã thử đề xuất của bạn và nhận được kết quả tương tự. Nó chấp nhận mật khẩu không hợp lệ chỉ trong kịch bản sau đây. 1) Kết nối Dynamics CRM với URL hợp lệ, Tên người dùng và Mật khẩu. 2) Vứt bỏ đối tượng dịch vụ tổ chức. 3) Kết nối lại Dynamics CRM với URL hợp lệ, Tên người dùng và Mật khẩu không hợp lệ. Khi chúng tôi cố gắng đăng nhập bằng mật khẩu không hợp lệ tại lần thử đầu tiên, nó sẽ hiển thị thông báo lỗi xác thực thất bại. – user3270512

Các vấn đề liên quan