我有一個WCF服務端點,它使用WsHttpBinding和BasicHttpBinding以及不同的地址來允許它們共享端點。 BasicHttpBinding沒有安全性。當我的服務和客戶端在同一臺機器上時,BasicHttpBinding正常工作。當它們位於不同的機器上時,BasicHttpBinding失敗,並且在服務的跟蹤日誌中出現此錯誤:未提供服務證書。在ServiceCredentials中指定一個服務證書。當與WsHttpBinding共享端點時,BasicHttpBinding失敗 - 未提供服務器證書
如果我從服務的配置中刪除WsHttpBinding,錯誤將停止。
服務的web.config:
<bindings>
<basicHttpBinding>
<binding name="MyBasicBinding"
maxBufferPoolSize="5242880"
maxReceivedMessageSize="5242880" />
</basicHttpBinding>
<wsHttpBinding>
<binding name="MyWsBinding"
bypassProxyOnLocal="false"
hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="5242880"
maxReceivedMessageSize="5242880"
allowCookies="false">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
<security mode="Message">
<message clientCredentialType="None" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<services>
<service name="MyService">
<endpoint address="basic" binding="basicHttpBinding" bindingConfiguration="MyBasicBinding"
contract="MyFramework.IMyService" bindingNamespace="http://MyFramework/Services/"/>
<!-- The basic binding fails when the WS binding is present.
If I remove the WS binding, the basic binding will work. -->
<endpoint address="" binding="wsHttpBinding" bindingConfiguration="MyWsBinding"
contract="MyFramework.IMyService" bindingNamespace="http://MyFramework/Services/"/>
</service>
</services>
僅供參考我使用的是不同的地址綁定基本允許2個綁定到共享相同的終點。 WsHttpBinding的URL是http://server/MyService.svc
,BasicHttpBinding的網址是http://server/MyService.svc/basic
。
爲什麼WsHttpBinding的存在強制BasicHttpBinding期望證書?
謝謝亞龍!我的解決方案是爲基本和WS創建2個SVC文件。 – Keith