2015-09-10 229 views
0

我想一個安全頭添加到看起來像下面的我的WCF SOAP消息:自定義綁定C#WCF

<s:Header> 
<Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">URLWithAction</Action> 
<Security xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> 
    <wsse:UsernameToken xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> 
    <wsse:Username>Username</wsse:Username> 
    <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">Password</wsse:Password> 
    </wsse:UsernameToken> 
</Security> 
</s:Header> 

然而,我無法弄清楚這是否可以用basicHttpBinding的或其他進行標準的一個,或者如果我必須定製一個以及如何定製一個... 任何人都可以提供幫助嗎?

+0

這是一個呼出或呼入消息?你想在客戶端還是服務器端添加標題? – ojf

+0

這是來自客戶端的傳出消息 – user3660338

+0

客戶端是C#並使用WCF?如果是的話,下面的答案仍然有效。您可以使用IClientMessageInspector。我將更新我的答案 – ojf

回答

1

原來,我不得不打多一點,在屬性的安全元​​素我的自定義綁定。我添加了標籤includeTimestamp =「false」,然後安全頭文件工作,即使action元素沒有添加到頭文件中。

的custombinding的最終結果是:

<customBinding> 
<binding name="BasicHttpBinding_WebService"> 
    <textMessageEncoding messageVersion="Soap11" writeEncoding="utf-8" /> 
    <security authenticationMode="UserNameOverTransport" 
      includeTimestamp="false"/> 
    <httpsTransport /> 
</binding> 
<binding name="BasicHttpBinding_WebService1"/> 
</customBinding> 
+1

這一個修復我的問題。謝謝!!!! – erick2red