我有一個WCF服務正在用作我們正在與之集成的第三方asmx服務的包裝。它正在與之通信的服務是使用Visual Studio中的「添加服務」引用對話框添加的。 WCF服務中的代碼在單元測試中執行時工作,並且在調試Host應用程序時也可以工作。在IIS中運行時WCF服務無法連接到Web服務
調試主機在ASP.NET開發服務器中運行時,它可以正常工作。當我將應用程序部署到本地IIS實例(同開發機,IIS 5.1),該服務將啓動和運行,但連接OT第三方ASMX端點時,它拋出這個錯誤:
System.ServiceModel.Security.SecurityNegotiationException:
Could not establish trust relationship for the SSL/TLS secure channel with
authority 'xxxxx.thirdparty.com'. ---> System.Net.WebException: The underlying
connection was closed: Could not establish trust relationship for the SSL/TLS
secure channel. ---> System.Security.Authentication.AuthenticationException:
The remote certificate is invalid according to the validation procedure.
這些設置在服務端點的配置文件中:
<basicHttpBinding>
<binding name="ServiceSoap" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="false" proxyAddress="http://[internalWebProxyHere]">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
<security mode="Transport">
<transport clientCredentialType="None" proxyCredentialType="None" realm=""/>
<message clientCredentialType="UserName" algorithmSuite="Default"/>
</security>
</binding>
</basicHttpBinding>
該服務在Visual Studio中工作,但不在部署到IIS之後。我能做些什麼來調試AuthenticationExceptions?
編輯:客戶端的端點是這樣的:
<endpoint address="https://'xxxxx.thirdparty.com/thirdpartyendpoint.asmx"
binding="basicHttpBinding" bindingConfiguration="ServiceSoap"
contract="eContracting.ServiceSoap" name="ServiceSoap"
behaviorConfiguration="Behavior"/>
我嘗試添加的終結點行爲來禁用證書驗證,但這並沒有幫助:
<behavior name="Behavior">
<clientCredentials>
<serviceCertificate>
<authentication certificateValidationMode="None"/>
</serviceCertificate>
</clientCredentials>
</behavior>
如果這也有助於第三方證書由Rapid SSL CA頒發,證書有效。查看我的本地證書存儲區,此證書位於「中級證書頒發機構」選項卡中,但不在「受信任的根證書頒發機構」或「受信任的發佈者」中。
編輯:該問題已通過將證書添加到「受信任的根證書頒發機構」得到解決,儘管存在一個問題。
- 從ControlPanel導入證書 - > InternetProperties - > Content - >證書。如果以這種方式安裝,則表示它已成功,但不會在winhttpcertcfg中顯示。
- 通過執行導入證書開始 - >運行 - >鍵入'certmgr.msc'並通過這裏安裝。它會說成功導入,但證書不可用於winhttpcertcfg。
- 通過開始 - >運行 - > MMC導入證書並使用證書snapin工作正常。點擊here查看Windows XP的說明。
具體來說,這是什麼工作:
- 開始 - >運行 - > MMC
- 文件 - >添加/管理單元
- 單擊添加刪除...
- 選擇證書並單擊添加
- 選擇計算機帳戶然後單擊下一步
- 選擇本地計算機,然後單擊Finish(完成)
- 單擊關閉
導入證書從控制檯根到以下地點:
- 受信任的根證書頒發機構
- 中級證書頒發機構
- 第三方根證書頒發機構
是本地計算機上的「本地」IIS實例(與您正在開發的計算機相同)還是您的網絡等的「本地」。 – 2012-07-17 17:31:46
本地機器。 – 2012-07-17 17:34:15
什麼是客戶端設置? – 2012-07-17 18:24:29