2013-09-27 2 views
0

WCF 메시지 내에서 하나의 특정 필드에만 서명하면됩니다.WCF- 비누 메시지 본문의 특정 필드에 서명하십시오.

당신이 볼 수 있듯이
[System.Diagnostics.DebuggerStepThroughAttribute()] 
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")] 
[System.ServiceModel.MessageContractAttribute(WrapperName="simpleInputData", 
    ProtectionLevel = ProtectionLevel.None 
    , IsWrapped=true)] 
public partial class SimpleOperationRequest 
{ 

    [System.ServiceModel.MessageHeaderAttribute(
     ProtectionLevel = ProtectionLevel.None)] 
    public BusinessHeader businessHeader; 

    [System.ServiceModel.MessageHeaderAttribute(
     ProtectionLevel = ProtectionLevel.None)] 
    public TechnicalHeader technicalHeader; 

    [System.ServiceModel.MessageBodyMemberAttribute(
     ProtectionLevel = ProtectionLevel.Sign, Order = 0)] 
    public SimpleInput simpleInput; 

    [System.ServiceModel.MessageBodyMemberAttribute(
     ProtectionLevel = ProtectionLevel.None, Order = 1)] 
    public Attachment attachment; 

    [...] 
} 

, 나는 단지 simpleInput 필드에 서명 필요는 없지만, 나는이 코드를 실행하면, 전송 패키지는 (본체 만 노드를 표시) :

클래스는 다음 측면을 가지고
[...]  
<s:Body u:Id="_3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
     <simpleInputData xmlns="http://xxxx/simple"> 
      <simpleInput> 
      <in>llega?</in> 
      </simpleInput> 
      <attachment> 
      <ImageData>iVBORw0K...5CYII=</ImageData> 
      </attachment> 
     </simpleInputData> 
     </s:Body> 
    [...] 

코드에서 전체 본문 노드에 서명 된 것을 볼 수 있습니다.

노드 "simpleInput"만 서명 할 수 있습니까 ??

미리 감사드립니다.

답변

2

WCF에서는 불가능합니다. 몸 전체에 서명해야합니다. 어떤 헤더를 서명 할 지 선택할 수 있습니다.