好的,我在託管應用程序中託管了WCF服務。自託管的WCF服務與HTTP協同工作,但不支持HTTPS
所有綁定都是以編程方式創建的,所以沒有配置設置。
我有一個工作服務,只要我使用HttpTransportBindingElement
,但是隻要我用HttpsTransportBindingElement
再沒有什麼作品,該服務不會在瀏覽器中顯示和客戶端應用程序返回405 (Method Not Allowed) CommunicationException
我已經嘗試設置SecurityBindingElement
我的CustomBinding
,但我不知道我應該使用哪個選項。
SecurityBindingElement.CreateCertificateOverTransportBindingElement()
SecurityBindingElement.CreateAnonymousForCertificateBindingElement()
等
爲創建主機的代碼如下
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);
}
什麼是'綁定'?另外WCF服務的編程配置是該死的難,爲什麼不使用配置文件? –
@ ta.speot.is能否詳細說明您的問題? –
@ shankar-damodaran感謝編輯:) –