首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用WCF / .NET压缩框架的Soap标头中缺少WS-Addressing元素

使用WCF / .NET压缩框架的Soap标头中缺少WS-Addressing元素
EN

Stack Overflow用户
提问于 2011-10-25 06:36:52
回答 1查看 1.2K关注 0票数 0

我需要在我们的WCF服务中使用WS-Addressing/WS-Security。这些服务由移动设备Windows Mobile6/ .NET Compact Frameowk3.5调用。

我已经准备好了所有的东西,但是由于某种原因,MessageID没有包含在我的头文件中,它被列为必填项。绑定和客户端指定了Soap12WSAddressing10。我是从传输层日志中得到的:

代码语言:javascript
复制
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
  <s:Header>
    <a:Action s:mustUnderstand="1" u:Id="_3">http://tempuri.org/ISyncService/GetSchemaResponse</a:Action>
    <ActivityId CorrelationId="28815cbc-7d07-45ea-9ce6-ce0a68a375f2" xmlns="http://schemas.microsoft.com/2004/09/ServiceModel/Diagnostics">7a63c3ec-5955-47fd-9af2-45211b839783</ActivityId>
    <o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
    <u:Timestamp u:Id="uuid-4fb4f460-8485-492b-9865-1b4b49c5c187-16">
      <u:Created>2011-10-24T22:09:53.182Z</u:Created>
      <u:Expires>2011-10-24T22:14:53.182Z</u:Expires>
    </u:Timestamp>

有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2012-02-17 23:12:38

我不知道是否已经回答了这项质询。我假设您想要在响应中添加ws addressing header MessageId。您可以实现一个IDispatchMessageInspector,并在beforesendreply函数中在回复中添加一个MessageId (我使用的是VB.NET,但C#应该是等效的):

代码语言:javascript
复制
Public Sub BeforeSendReply(ByRef reply As System.ServiceModel.Channels.Message, ByVal correlationState As Object) Implements IDispatchMessageInspector.BeforeSendReply
   reply.Headers.MessageId = New UniqueId(Guid.NewGuid())
End sub

在我的例子中,在使用messageversion Soap11WSAddressing10 or Soap12WSAddressing10时,我的响应中同时缺少MessageIdTo-header。我设法用上面的代码添加了MessageId,但是如果我尝试以同样的方式添加To标头,那么当响应到达客户端时,To标头永远不会被包括在内。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7882775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档