2014-10-04 59 views
0

請求消息必須受到保護。這是合同操作('IMyNumericService','http://tempuri.org/')所要求的。保護必須由綁定提供('BasicHttpBinding','http://tempuri.org/')。在Wcf客戶端未連接到主機

當我試圖連接到我註冊我的服務的主機時,我收到上述異常。但主機工作,當我嘗試從客戶端應用程序連接它顯示以上異常

+0

看起來像一個綁定不匹配。請包括您的服務配置和您的客戶端配置。 – tomasr 2014-10-05 01:49:17

+0

現在它正在爲WSHttpBinding工作,但不適用於BasicHttpBinding – VinodKumar 2014-10-06 07:22:05

+0

所以......它的解決了?如果沒有,發佈你的配置,所以我們可以幫你:) – tomasr 2014-10-06 13:48:15

回答

0

在WCF客戶端和服務安全。您可以在WCF中的消息,錯誤,操作和/或服務級別上設置通過線路發送的消息的保護級別。有三個消息ProtectionLevel屬性風格可以設置爲屬性。這可確保用於該服務的任何端點都至少需要此保護級別。

無 純文本傳輸線。 簽名 該消息是數字簽名的。 確保不對消息進行修改。 該消息仍是純文本。 加密和簽名 簽名之前,郵件被加密。 確保不對消息進行修改並進行加密。 例如,如果EchoService在ServiceContract級別上設置了EncryptAndSign的ProtectionLevel級別,則帶有BasicHttpBinding的端點將無法啓動。這是因爲BasicHttpBinding默認不支持此保護級別(可以啓用)。公共接口IEchoService {OperationContract(IsOneWay = true)] void RegisterClient(Guid guid);

[FaultContract(typeof(EchoFault))] 
    [OperationContract] 
    EchoMessage Echo(EchoMessage message); 

    [OperationContract] 
    List<EchoMessage> GetAllEchos(); 
} 

在BasicHttpBinding端點上使用此保護級別會導致主機發生異常。

System.InvalidOperationException:請求消息必須受到保護。這是合同[..]的操作所要求的。保護必須由綁定[..]提供。

但是,如果我們將端點綁定更改爲例如wsHttpBinding,則服務運行正常。這是因爲WsHttpBinding默認支持EncryptAndSign保護級別。

+0

建議如果你發現任何更改..! – VinodKumar 2014-10-06 17:43:49