为什么 WCF 删除了我的回复消息中的 wsa:To 标头?

2024-02-26

我有一个 WCF 服务IDispatchMessageInspector and a BeforeSendReply修改消息的 WS-Addressing 标头的方法。这适用于所有标头,但 wsa:To 除外,该标头正在从回复中删除...

public void BeforeSendReply(ref Message reply, object correlationState)
{
    reply.Headers.To = new Uri("urn:something:something:something"); // Why won't this show up in the response?

    reply.Headers.From = new EndpointAddress("urn:blabla:blabla");
    reply.Headers.MessageId = MessageIDHelper.CreateNew();
    reply.Headers.ReplyTo = new EndpointAddress(Definitions.WSA_REPLYTO_ANONYMOUS);
    reply.Headers.Action = Definitions.WSA_ACTION_SOMETHING_SOMETHING;
}

这导致:

<s:Envelope xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:s="http://www.w3.org/2003/05/soap-envelope">
  <s:Header>
    <a:Action s:mustUnderstand="1">http://xxx.xx/xxx/Messages/1/Send</a:Action>
    <a:RelatesTo>SOME_ID_WHATEVER</a:RelatesTo>
    <a:From>
      <a:Address>urn:xxx.xx:xxx:xxx</a:Address>
    </a:From>
    <a:MessageID>urn:uuid:083b5fb7-ff45-4944-b881-b4c590577408</a:MessageID>
    <a:ReplyTo>
      <a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
    </a:ReplyTo>
  </s:Header>
  ...
</s:Envelope>

虽然result.ToString()(结果=Message类型)给了我:

<s:Envelope xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:s="http://www.w3.org/2003/05/soap-envelope">
  <s:Header>
    <a:Action s:mustUnderstand="1">http://xxx.xx/xxx/Messages/1/Send</a:Action>
    <a:RelatesTo>SOME_ID_WHATEVER</a:RelatesTo>
    <a:To s:mustUnderstand="1">urn:xxx.xx:xxx:xxx<a:To>
    <a:From>
      <a:Address>urn:xxx.xx:xxx:xxx</a:Address>
    </a:From>
    <a:MessageID>urn:uuid:083b5fb7-ff45-4944-b881-b4c590577408</a:MessageID>
    <a:ReplyTo>
      <a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
    </a:ReplyTo>
  </s:Header>
  ...
</s:Envelope>

那么...为什么是wsa:To我的回复中的标题被删除了吗?


的文档TransportBindingElement.ManualAddressing https://msdn.microsoft.com/en-us/library/system.servicemodel.channels.transportbindingelement.manualaddressing(v=vs.110).aspx属性提供了有关寻址行为的一些信息。 IE。如果 ManuelAddressing 的值设置为 false,则发送通道将通道上配置为 To: 收件人的 EndpointAddress 应用于传出消息。这意味着频道对 To: 标头的值有发言权。

现在BeforeSendReply()在服务级别修改消息内容,然后将其交给通道进行传输。因此,如果 ManuelAddressing 的值为 false,通道将在消息标头中设置自己的 To: 值。

每当 ManuelAddressing 的值设置为 true 时,通道就假定消息已被寻址并且不会添加任何附加信息。 为了将 ManuelAddressing 设置为 True,可以在 web.config 文件中创建自定义绑定:

<customBinding>
  <binding name="customBinding_manualAddressingEnabled">
    <textMessageEncoding />
    <httpTransport manualAddressing="true"/>
  </binding>
</customBinding>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 WCF 删除了我的回复消息中的 wsa:To 标头? 的相关文章

  • 为什么存在 async 关键字

    浏览 msdn 9 频道视频时 我发现以下未答复的评论 希望有人能解释一下 我不明白 async 关键字的意义 为什么不直接允许 任何时候方法返回任务时都会使用await关键字 就像迭代器一样 可以在任何返回 IEnumerable 的方法
  • 将字节数组转换为托管结构

    更新 这个问题的答案帮助我编写了开源项目GitHub 上的 AlicanC 现代战争 2 工具 https github com AlicanC AlicanC s Modern Warfare 2 Tool 你可以看到我是如何阅读这些数据
  • 在 C++ 中将成对向量转换为两个独立向量的最快方法

    假设我有一个vector of pair
  • 为什么大多数平台上没有“aligned_realloc”?

    MSVC有自己的非标准函数 aligned malloc aligned realloc and aligned free C 17和C11引入了 std aligned alloc 其结果可以是de分配有free or realloc B
  • 将字符串中的“奇怪”字符转换为罗马字符

    我需要能够将用户输入仅转换为 a z 罗马字符 不区分大小写 所以 我感兴趣的角色只有26个 然而 用户可以输入他们想要的任何 形式 的字符 西班牙语 n 法语 e 和德语 u 都可以包含用户输入中的重音符号 这些重音符号会被程序删除 我已
  • mprotect 之后 malloc 导致分段错误

    在使用 mprotect 保护内存区域后第一次调用 malloc 时 我遇到分段错误 这是执行内存分配和保护的代码片段 define PAGESIZE 4096 void paalloc int size Allocates and ali
  • 如何使用MySqlCommand和prepare语句进行多行插入?(#C)

    Mysql 给出了如何使用准备语句和 NET 插入行的示例 http dev mysql com doc refman 5 5 en connector net programming prepared html http dev mysq
  • 将字符串转换为正确的 URI 格式?

    有没有简单的方法可以将电子邮件地址字符串转换为正确的 URI 格式 Input http mywebsite com validate email 3DE4ED727750215D957F8A1E4B117C38E7250C33 email
  • 从成员函数指针类型生成函子

    我正在尝试简化 通过make fn 预处理参数的函子的生成 通过wrap 对于 arity 的成员函数n 生成函子基本上可以工作 但到目前为止只能通过显式指定成员函数的参数类型来实现 现在我想从它处理的成员函数类型生成正确的函子 struc
  • 2D morton 码编码/解码 64 位

    如何将给定 x y 的莫顿代码 z 顺序 编码 解码为 32 位无符号整数 生成 64 位莫顿代码 反之亦然 我确实有 xy2d 和 d2xy 但仅适用于 16 位宽的坐标 产生 32 位莫顿数 在网上查了很多 但没有找到 请帮忙 如果您可
  • OpenCV 2.4.3 中的阴影去除

    我正在使用 OpenCV 2 4 3 最新版本 使用内置的视频流检测前景GMG http docs opencv org modules gpu doc video html highlight gmg gpu 3a 3aGMG GPU算法
  • 二叉树中的 BFS

    我正在尝试编写二叉树中广度优先搜索的代码 我已将所有数据存储在队列中 但我不知道如何访问所有节点并消耗它们的所有子节点 这是我的 C 代码 void breadthFirstSearch btree bt queue q if bt NUL
  • 为什么要在 C++ 中使用 typedef?

    可以说我有 set
  • 使用 mingw32 在 Windows 上构建 glew 时“DllMainCRTStartup@12”的多个定义

    我关注了这个主题 使用 mingw 使建筑物在 Windows 上闪闪发光 https stackoverflow com questions 6005076 building glew on windows with mingw 6005
  • DataTable:通过 LINQ 或 LAMBDA 进行动态 Group By 表达式

    我有一个数据表 我想在其中对未指定数量的字段进行分组 发生这种情况的原因是用户可以选择他想要分组的字段 所以 实际上 我将选择推入列表中 在这个选择上 我必须对我的数据表进行分组 想象一下这段代码 VB 或 C 都一样 public voi
  • 使用 iTextSharp 5.3.3 和 USB 令牌签署 PDF

    我是 iTextSharp 和 StackOverFlow 的新手 我正在尝试使用外部 USB 令牌在 C 中签署 PDF 我尝试使用从互联网上挖掘的以下代码 Org BouncyCastle X509 X509CertificatePar
  • C语言声明数组没有初始大小

    编写一个程序来操纵温度详细信息 如下所示 输入要计算的天数 主功能 输入摄氏度温度 输入功能 将温度从摄氏度转换为华氏度 独立功能 查找华氏度的平均温度 我怎样才能在没有数组初始大小的情况下制作这个程序 include
  • 为什么文件更新时“如果较新则复制”不复制文件?

    我在 Visual Studio Express 中有一个解决方案 如下所示 The LogicSchemaC 中的类 将在运行时解析指定的 XML 文件 以下是在main的方法Program cs LogicSchema ls new L
  • 以 UTF8 而不是 UTF16 输出 DataTable XML

    我有一个 DataTable 我正在使用 WriteXML 创建一个 XML 文件 尽管我在以 UTF 16 编码导出它时遇到问题 并且似乎没有明显的方法来更改它 我了解 NET 在字符串内部使用 UTF 16 这是正确的吗 然后 我通过
  • 如何使用 C# 以低分辨率形式提供高分辨率图像

    尝试使用 300dpi tif 图像在网络上显示 目前 当用户上传图像时 我正在动态创建缩略图 如果创建的页面引用宽度为 500x500px 的高分辨率图像 我可以使用相同的功能即时转换为 gif jpg 吗 将创建的 jpg 的即将分辨率

随机推荐

  • Angular Material 和 Jasmine:“没有 InjectionToken MdDialogData 的提供者!”

    我有一个用于 Angular Material MdDialog 的组件 Component export class MyComponent constructor Inject MAT DIALOG DATA public data a
  • 调用插页式 iAd 只能运行一次

    我有 spritekit 游戏 每次游戏开始时都会预加载广告 UIViewController prepareInterstitialAds 游戏结束后 它应该显示广告 self view window rootViewController
  • 在 Javascript 中从 uid 获取 Facebookthird_party_id

    有谁如何从 Javascript 中的 uid 获取third party id 我正在尝试寻找它但没有成功 Regards third party id是一个字段Graph API 中的用户对象 http developers faceb
  • 如何检测其他应用程序是否正在播放背景音频?

    我正在为 iphone ipad 制作一款游戏 并且不希望我的背景音乐干扰用户可能已经在播放的音乐 我知道我可以使用 PlayerController 获取 iPod 应用程序的状态 但我的应用程序如何判断是否有其他设备 例如 Pandor
  • 从 Python 中的现有文件中选择一些单词 [重复]

    这个问题在这里已经有答案了 我想分隔文本文件的确切单词 text txt 使用 endswith 以某个字符串结尾 事实是我的变量 h w for w in text txt if w endswith os 当我打电话时没有给出我想要的
  • swscaler 错误的 src 图像指针

    我完全迷路了 我正在尝试捕获 30 个屏幕截图并将它们放入视频中FFMPEG在 Windows 10 下 它一直告诉我 swscaler 073890a0 bad src image pointers 结果视频完全是绿色的 如果我将格式更改
  • 为 sqlalchemy 应用程序编写 pytest

    我正在尝试将单元测试转换为 py 测试 我正在使用单元测试示例 class TestCase unittest TestCase def setUp self app config TESTING True app config CSRF
  • 使用 http-server 永远部署节点应用程序

    我想使用 http server 和forever js 将我的应用程序部署到远程 ubuntu 服务器 但forever js需要JS文件的路径 而不是可执行文件的路径 所以我无法将密钥传递给 http server 迄今为止最好的解决方
  • 跨域不起作用

    React 让我说跨源请求被阻止 同源策略不允许读取远程资源http localhost 8080 用户 http localhost 8080 users 原因 CORS 标头 Access Control Allow Origin 丢失
  • 在 Windows 8、python 3.3 中创建虚拟环境时出现问题

    我正在尝试在 Python 中创建虚拟环境 但无论重新安装 python setuptools 和 pip 多少次 我总是会收到错误 我的计算机运行的是 Windows 8 并且使用的是 Python 3 3 E Documents pro
  • Android:UI 线程被阻止

    在我的应用程序中 我创建了一个自定义对话框 它在 webview 和普通 android 应用程序中显示 并且在显示对话框时我做了一些后台操作 当我调用 mydialog 函数时 它会显示我的自定义对话框 它还返回一些值 当我使用 webv
  • Spring data jpa findByDate 始终返回空列表

    我在我的应用程序中使用 spring data jpa 1 9 2 mysql connector 5 1 和 hibernate 4 3 11 Final 我的 Order 类有一个日期类型的 创建 属性 Entity public cl
  • 应用程序扩展如何访问包含应用程序 Documents/ 文件夹中的文件

    在应用程序扩展中 有没有一种方法可以获取从存储在 var mobile Containers Data Application Documents 文件夹中的包含应用程序生成的图像 为了使文件可用于应用程序扩展 您必须使用Group Pat
  • 使用本地端的 sudo 权限和我的个人 SSH 密钥,通过 SSH 将远程文件同步到我的本地计算机

    我想同步目录 var sites example net 从远程计算机到本地计算机上同一路径的目录 远程计算机仅使用密钥而不是密码来验证 SSH 连接 在我的本地计算机上 我在 ssh config 中设置了一个别名 以便我可以轻松运行ss
  • 当软键盘可见时无法单击按钮

    当文本输入元素具有焦点 并且软键盘可见 时 我无法直接单击提交按钮 清晰可见 我必须首先关闭键盘 通过单击其他地方或键盘上的 完成 然后单击提交按钮 这是令人困惑的行为 我考虑过在键盘可见时完全删除登录按钮 但这太令人困惑了 因为用户不知道
  • 在 Rails 3 中使用液体

    我正在制作一个 Rails 博客引擎用于学习目的 我想使用液体作为模板引擎 我有这样的东西 posts controller rb def index posts Post all end posts index html liquid f
  • 如何在 iPhone 中自动布局 ui 视图控制器中的按钮?

    我的尺寸为 4 英寸 并且在 3 个不同的行中添加了 4 个图标 所有图标的尺寸均为 60x60 我可以在 iphone 4s 5 5s 中获得正确的视图 但在 iphone 6 和 6 plus 中则不能 那么我如何对其应用自动布局 并使
  • 当设置为 CRLF 时,SSIS 将 LF 读取为终止符

    使用 SSIS 2012 我的平面文件连接管理器我有一个分隔文件 其中行分隔符设置为CRLF 但是当它处理文件时 我有一个文本列 其中有一个LF在里面 这导致它将其读取为行终止符 从而导致失败 有任何想法吗 我没有 SSIS 经验 但作为一
  • 我收到错误:执行量角器时找不到模块“黄瓜”

    我找到了一些描述设置步骤的帖子 但是当我按照它们操作时 我收到一个错误 找不到模块 黄瓜 我全局安装了黄瓜和量角器以及量角器 黄瓜 并且可以单独执行它们 但在尝试使用黄瓜框架执行量角器时则不能 我使用的配置文件如下 var env requ
  • 为什么 WCF 删除了我的回复消息中的 wsa:To 标头?

    我有一个 WCF 服务IDispatchMessageInspector and a BeforeSendReply修改消息的 WS Addressing 标头的方法 这适用于所有标头 但 wsa To 除外 该标头正在从回复中删除 pub