2011-12-21 29 views
7
  • Chúng tôi có 2 tổ chức hoạt động trong hệ thống CRM tại chỗ của chúng tôi năm 2011.
  • Chúng tôi đã tạo các lớp học bị ràng buộc sớm cho cả hai tổ chức.
  • Một trong các plugin của chúng tôi là ném "một loại proxy với tên tài khoản đã được xác định bởi một hội đồng khác" lỗi khi hủy kích hoạt tài khoản.
  • Plugin đó chỉ tham chiếu đến một trong những dll bị ràng buộc sớm nhất.

Làm cách nào để hệ thống CRM tôn trọng không gian tên của các tham chiếu này.
Tôi đã thử một vài mục hiển thị từ Google và không có mục nào đang hoạt động.loại proxy với tài khoản tên đã được xác định bởi một hội đồng khác

Vì bạn có thể tái tạo điều này với 2 tổ chức vanilla, tôi sẽ chụp ảnh có điều gì đó bên ngoài lớp mã mà chúng tôi có thể thực hiện mà không phải quay lại và tái cấu trúc một loạt mã cho 2 tổ chức.

Cảm ơn,
Jon

+0

Plugin có được đăng ký trong hộp cát không? Bạn có chắc chắn rằng không gian tên là khác nhau cho cả hai tập tin được tạo ra? – ccellar

Trả lời

0

này thường có nghĩa là có một hoặc nhiều bộ phận nhỏ với tên phương pháp tương tự hoặc tài sản để sửa lỗi này sử dụng tên đầy đủ của hội đồng .. ví dụ như trong using System. IO ví dụ nếu bạn đã có một phương pháp có tên giống như cách trong mã lớp của bạn xung đột với System.IO .... bạn sẽ viết sửa lỗi của bạn như thisObject.System.IO.Path (----) = somthing ví dụ .. Điều này có nghĩa không..?

+0

thx cho nhận xét. Tôi tin rằng đây là một vấn đề cụ thể đối với CRM 2011 đang thực hiện một số loại tải phản chiếu và bộ nhớ đệm thay vì một tham chiếu mơ hồ. – user1231231412

+0

CRM có sử dụng một cái gì đó trong ảnh hưởng của việc tải một hội đồng cụ thể .. xin lỗi vì sự hiểu lầm của tôi. – MethodMan

+0

không phải lo lắng, tôi không nghĩ rằng bất cứ ai thực sự hiểu những gì CRM đang làm: D. Có, từ những gì tôi đã đọc CRM thực hiện một số loại bộ nhớ đệm kiểu trên tất cả các tổ chức. Mà sẽ gây ra một vấn đề rõ ràng vì họ TẤT CẢ có te cùng một loại built-in. – user1231231412

7

Vấn đề là thực sự với WCF cố gắng loại bỏ phản hồi của máy chủ và không thể xác định đúng loại. Phương pháp tốt nhất để sắp xếp vấn đề này là truyền trong assembly hiện tại bằng Assembly.GetExecutingAssembly() tới ProxyTypesBehavior() trong khi tạo proxy như vậy.

using (serviceProxy = new OrganizationServiceProxy(config.OrganizationUri, 
       config.HomeRealmUri, 
       config.Credentials, 
       config.DeviceCredentials)) 
     { 
      // This statement is required to enable early-bound type support. 
      serviceProxy.ServiceConfiguration.CurrentServiceEndpoint.Behaviors.Add(new ProxyTypesBehavior(Assembly.GetExecutingAssembly())); 
     } 
+0

Nếu bạn cần làm điều này với một cá thể OrgnizationService (Microsoft.Xrm.Client.Services.OrganizationService) (giống như bạn sẽ sử dụng CrmConnection), thì bạn cần phải tạo một lớp bao bọc xung quanh OrganizationService để bạn có thể truy cập Phương thức ToOrganizationServiceProxy và xóa hành vi mặc định sau đó thêm hành vi mới từ phía trên. – GotDibbs

0

Tôi thấy rằng việc thêm Assembly.GetExecutingAssembly() đã giải quyết được sự cố.

0

thêm Assembly.GetExecutingAssembly() giải quyết vấn đề của tôi, bạn cũng cần phải thêm using System.Reflection;

nhờ

4

Bạn có thể chạy vào vấn đề này khi tham khảo lắp ráp khác nhau chứa proxy-lớp, tức là một gói các lắp ráp SDK máy chủ (Microsoft.Xrm.Sdk) và một phiên bản khác gói SDK khách hàng (Microsoft.Xrm.Sdk.Client). Trong kịch bản như vậy, có vẻ như cần phải nói cho OrganizationServiceProxy biết nên sử dụng assembly nào để giải quyết các lớp proxy.

Điều này sẽ giúp:

var credentials = new ClientCredentials(); 
credentials.Windows.ClientCredential = new System.Net.NetworkCredential(userName, password, domain); 

var proxy = new OrganizationServiceProxy(new Uri(discoveryUrl), null, credentials, null); 
proxy.EnableProxyTypes(typeof(CrmServiceContext).Assembly); 

var context = CrmServiceContext(proxy); 

Điều quan trọng là để gọi EnableProxyTypes bằng cách truyền lắp ráp chính xác. Tôi thấy một solution using CrmConnection nhưng CrmConnection chỉ có sẵn trong SDK khách hàng, có nghĩa là bạn không thể khởi tạo "máy chủ-OrganizationServiceProxy" theo cách này. EnableProxyTypes (Assembly assembly) hoạt động cho cả hai phía.

Hy vọng điều này sẽ hữu ích.

Trân trọng, MH

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