WCF分散式開發常見錯誤(27):Securechannelcannotbeopened

技術小胖子發表於2017-11-08
這個問題是周巨集偉在除錯WCF分散式安全開發實踐(12):訊息安全模式之自定義X509證書驗證:Message_CustomX509Certificate_WSHttpBinding 。發現並提出來的,我幫助除錯,找到了問題的解決辦法。發出來一起分享給大家。
【1.問題描述】:
    1.專案型別:IIS託管的WCF服務。
    2.安全型別:訊息安全模式+ 自定義X509證書驗證。+WSHttpBinding :Message_CustomX509Certificate_WSHttpBinding
   3.客戶端型別:ASP.NET 網站。
   4.錯誤資訊:Secure channel cannot be opened because security negotiation with the remote endpoint has failed. This may be due to absent or incorrectly specified EndpointIdentity in the EndpointAddress used to create the channel. Please verify the EndpointIdentity specified or implied by the EndpointAddress correctly identifies the remote endpoint.
  安全通道無法開啟,因為安全與遠端終結點協商已經失敗。這可能是由於在EndpointAddress 缺少或不正確指定用於建立通道的EndpointIdentity。請驗證EndpointIdentity指定或暗示的EndpointAddress正確標識遠端終結點。
   5.錯誤截圖:
【2.問題分析】:
     導致這個問題的可能原因有2個:
(1)沒有服務端配置安全選項。
(2)服務沒有啟動。
    網上的同樣的問題也很多,但是沒有什麼幫助。這裡針對2個Web型別的應用專案。在除錯的時候容易出現這樣的問題。
【3.解決方案】:
  原因(1):
         檢查服務配置,證書設定:
 
            <wsHttpBinding>

                
<binding name=”MyBindingConfigration”>

                    
<security mode=”Message”>

                        
<transport clientCredentialType=”None”/>

                        
<message clientCredentialType=”Certificate”/>

                    
</security>

                
</binding>

            
</wsHttpBinding>
     原因(2):由於一個解決方案裡包含2個專案,所以要保證服務啟動。步驟如下:
            這個問題的關鍵在於,你雖然設定了證書,這裡錯誤提示是,與服務終結點協商失敗,原因不是證書。

            是整數標識的服務,沒有啟動,導致協商錯誤。你右鍵-》Debug->啟動新的例項,先把服務啟動。

            然後在右鍵-》Debug->啟動新的客戶端專案例項。這樣單步除錯就通過了。

            我把證書名稱換為我本機的證書,你記得根據自己的證書名稱修改配置檔案。
參考連結:
 本文轉自 frankxulei 51CTO部落格,原文連結:http://blog.51cto.com/frankxulei/320966,如需轉載請自行聯絡原作者


相關文章