Ok vì vậy tôi đang lưu trữ một dịch vụ WCF trong một ứng dụng bảng điều khiển.Dịch vụ WCF tự lưu trữ hoạt động với HTTP không phải với HTTPS
tất cả các liên kết được tạo theo chương trình, do đó không có cài đặt cấu hình.
Tôi có một dịch vụ làm việc miễn là tôi sử dụng HttpTransportBindingElement
Tuy nhiên ngay sau khi tôi sử dụng HttpsTransportBindingElement
sau đó không có gì hoạt động, dịch vụ không hiển thị trong trình duyệt và các ứng dụng khách hàng trả về một 405 (Method Not Allowed) CommunicationException
Tôi đã cố gắng thiết lập một SecurityBindingElement
đến số CustomBinding
của tôi nhưng tôi không chắc mình nên sử dụng tùy chọn nào.
SecurityBindingElement.CreateCertificateOverTransportBindingElement()
SecurityBindingElement.CreateAnonymousForCertificateBindingElement()
, vv
Mã cho việc tạo ra các máy chủ nằm dưới
baseAddress = new Uri(string.Format("{0}://{1}", strConnectionType, ConfigurationManager.AppSettings["baseAddress"]));
ServiceHost host = new ServiceHost(typeof(IMyService), baseAddress);
host.AddServiceEndpoint(typeof(MyService), binding, String.Empty);
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpsGetEnabled = certificate != null;
smb.HttpGetEnabled = certificate == null;
host.Description.Behaviors.Add(smb);
ServiceDebugBehavior sdb = host.Description.Behaviors.Find<ServiceDebugBehavior>();
if (sdb == null)
{
host.Description.Behaviors.Add(new ServiceDebugBehavior() { IncludeExceptionDetailInFaults = true });
}
else
{
if (!sdb.IncludeExceptionDetailInFaults)
{
sdb.IncludeExceptionDetailInFaults = true;
}
}
if (certificate != null)
{
host.Credentials.ServiceCertificate.SetCertificate(StoreLocation.LocalMachine, StoreName.My, X509FindType.FindByThumbprint, certificate.Thumbprint);
}
'ràng buộc' là gì? Ngoài ra cấu hình lập trình của các dịch vụ WCF là khó khăn khó khăn, tại sao không sử dụng tập tin cấu hình? –
@ ta.speot.is bạn có thể giải thích thêm về câu hỏi của mình không? –
@ shankar-damodaran cảm ơn bạn đã chỉnh sửa :) –