Tôi đang cố triển khai kịch bản WCF thuần túy nơi tôi muốn gọi Dịch vụ WCF Dynamics CRM WCF mà không cần dựa vào các lớp trợ giúp SDK. Về cơ bản, tôi muốn triển khai xác thực liên kết với Dynamics CRM 2011 chỉ sử dụng hỗ trợ WCF gốc từ khung .net.Có thể gọi dịch vụ Tổ chức WCF muộn về Dynamics CRM 2011 mà không có ràng buộc tùy chỉnh SDK - thẳng không?
Lý do tôi làm điều này là tôi muốn chuyển kịch bản này sau này sang BizTalk.
Tôi đã tạo thành công lớp proxy với SvcUtil, nhưng một phần của chính sách và xác nhận bảo mật không tương thích với lược đồ cấu hình. SvcUtil đề xuất xây dựng ràng buộc từ mã thay vào đó, đó là những gì tôi đang cố gắng làm.
Mã kết quả là đây:
private static void CallWcf()
{
OrganizationServiceClient client = null;
try
{
// Login Live.com Issuer Binding
var wsHttpBinding = new WSHttpBinding();
wsHttpBinding.Security = new WSHttpSecurity();
wsHttpBinding.Security.Mode = SecurityMode.Transport;
// Endpoint Binding Elements
var securityElement = new TransportSecurityBindingElement();
securityElement.DefaultAlgorithmSuite = SecurityAlgorithmSuite.TripleDes;
securityElement.IncludeTimestamp = true;
securityElement.KeyEntropyMode = SecurityKeyEntropyMode.CombinedEntropy;
securityElement.MessageSecurityVersion = MessageSecurityVersion.WSSecurity11WSTrust13WSSecureConversation13WSSecurityPolicy12BasicSecurityProfile10;
securityElement.SecurityHeaderLayout = SecurityHeaderLayout.Strict;
var securityTokenParameters = new IssuedSecurityTokenParameters();
securityTokenParameters.InclusionMode = SecurityTokenInclusionMode.AlwaysToRecipient;
securityTokenParameters.ReferenceStyle = SecurityTokenReferenceStyle.Internal;
securityTokenParameters.RequireDerivedKeys = false;
securityTokenParameters.TokenType = null;
securityTokenParameters.KeyType = SecurityKeyType.SymmetricKey;
securityTokenParameters.KeySize = 192;
securityTokenParameters.IssuerAddress = new EndpointAddress("https://login.live.com/extSTS.srf");
securityTokenParameters.IssuerMetadataAddress = null;
securityTokenParameters.DefaultMessageSecurityVersion = null;
securityTokenParameters.IssuerBinding = wsHttpBinding;
securityElement.EndpointSupportingTokenParameters.Signed.Add(securityTokenParameters);
var textMessageEncodingElement = new TextMessageEncodingBindingElement();
textMessageEncodingElement.MaxReadPoolSize = 64;
textMessageEncodingElement.MaxWritePoolSize = 16;
textMessageEncodingElement.MessageVersion = MessageVersion.Default;
textMessageEncodingElement.WriteEncoding = System.Text.Encoding.UTF8;
textMessageEncodingElement.ReaderQuotas.MaxStringContentLength = 8192;
textMessageEncodingElement.ReaderQuotas.MaxArrayLength = 16384;
textMessageEncodingElement.ReaderQuotas.MaxBytesPerRead = 4096;
textMessageEncodingElement.ReaderQuotas.MaxNameTableCharCount = 16384;
var httpsTransportElement = new HttpsTransportBindingElement();
httpsTransportElement.ManualAddressing = false;
httpsTransportElement.AuthenticationScheme = System.Net.AuthenticationSchemes.Anonymous;
CustomBinding binding = new CustomBinding();
binding.Elements.Add(securityElement);
binding.Elements.Add(textMessageEncodingElement);
binding.Elements.Add(httpsTransportElement);
client = new OrganizationServiceClient(binding, new EndpointAddress(EndpointUri));
client.ClientCredentials.UserName.UserName = Username;
client.ClientCredentials.UserName.Password = Password;
client.Open();
var columnSet = new schemas.microsoft.com.xrm._2011.Contracts.ColumnSet();
var identifier = new Guid("fbf8240e-2c85-e011-ad55-1cc1de0878eb");
columnSet.Columns = new string[] { "name" };
var entity = client.Retrieve("account", identifier, columnSet);
}
finally
{
if (client != null)
client.Close();
}
}
Tôi mới để xác thực liên và đang gặp một thời gian khó khăn để tìm ra sự khác biệt tiềm năng giữa nhiều ràng buộc có sẵn, vì vậy tôi sẽ biết ơn sự giúp đỡ nào trong vấn đề này.
Bạn đã bao giờ tìm hiểu cách thực hiện việc này chưa? – cheeesus
Và bạn có ý nghĩa gì với các lớp trợ giúp SDK? – cheeesus
Tôi đã không theo đuổi điều này và không bao giờ phát hiện ra. Những gì tôi gọi là Lớp trợ giúp SDK là các mẫu khác nhau được gửi cùng với SDK CRM 2011. –