 悬赏园豆:50
                [已关闭问题]
                悬赏园豆:50
                [已关闭问题] 
            
                 
        需要在WCF客户端调用webService时在(header)信息头中加入以下内容:
          <wsse:Security mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
            <wsse:UsernameToken wsu:Id="UsernameToken-5700630" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
              <wsse:Username>username</wsse:Username>
              <wsse:UserTokenID>password</wsse:UserTokenID>
              </wsse:UsernameToken>
          </wsse:Security>
其中username,和passwork会变化需要传入。
目前使用在config中加入
    <client>
      <endpoint address="http://localhost:81/="MessageTransportBinding"
          binding="basicHttpBinding" bindingConfiguration="MessageTransportBinding" 
          contract="MessageTransportService.MessageTransportPort" name="MessageTransportPort" >
        <headers>
          <wsse:Security mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
            <wsse:UsernameToken wsu:Id="UsernameToken-5700630" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
              <wsse:Username>username</wsse:Username>
              <wsse:UserTokenID>password</wsse:UserTokenID>
              </wsse:UsernameToken>
          </wsse:Security>
        </headers>
      </endpoint>
    </client>
虽然实现了在消息中加入自定义的头,但是无法修改username和password的值。。。。
往大哥指教告诉我怎么才能按username和password的值生成相应的信息头并加入到消息的头区域。
Hi,
我查询到一个文章,你参考一下http://stackoverflow.com/questions/893588/wcf-adding-username-to-the-message-header-is-this-secure。里面有操作MessageHeader的代码,:
using (OperationContextScope scope = new OperationContextScope(myService2.InnerChannel))
  {
    Guid myToken = Guid.NewGuid();
    MessageHeader<string> messageHeader = new MessageHeader<string>(HttpContext.Current.User.Identity.Name);
    MessageHeader untyped = messageHeader.GetUntypedHeader("token", "ns");
    OperationContext.Current.OutgoingMessageHeaders.Add(untyped);
    lblResult.Text = myService2.GetData(1231);
  }
你调用Web服务,应该可以对消息做处理,代码应该类似。
我不确定这个对你是否有参考价值http://social.msdn.microsoft.com/Forums/en-US/asmxandxml/thread/aa1e3c3a-be80-417e-a26e-233fe8c2ef5b。
希望对你的问题解决有帮助~
亲,请问您的问题解决了吗?