- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有 IDispatchMessageInspector
和 BeforeSendReply
方法的 WCF 服务,它修改消息的 WS-Addressing header 。这适用于所有 header ,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()
(result = 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
header 从我的回复中删除了?
最佳答案
TransportBindingElement.ManualAddressing 的文档属性提供有关寻址行为的一些信息。 IE。如果 ManuelAddressing 的值设置为 false,则发送 channel 将 channel 上配置为 To: addressee 的 EndpointAddress 应用于传出消息。这意味着 channel 对 To: header 的值有发言权。
现在,BeforeSendReply()
在服务级别修改消息的内容,然后将其交给 channel 进行传输。因此,如果 ManuelAddressing 的值为 false, channel 将在消息头中设置自己的 To: 值。
只要 ManuelAddressing 的值设置为 true, channel 就会假定消息已经被寻址并且不会添加任何附加信息。为了将 ManuelAddressing 设置为 True,可以在 web.config 文件中创建自定义绑定(bind):
<customBinding>
<binding name="customBinding_manualAddressingEnabled">
<textMessageEncoding />
<httpTransport manualAddressing="true"/>
</binding>
</customBinding>
关于c# - 为什么wsa是:To header in my reply message removed by WCF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42701721/
我在 win32 c++ 应用程序中使用 winsock2。我会用 MessageBox 显示我可以通过调用 WSAGetLastError() 检索的网络错误。我怎样才能做到这一点?我看到了 For
我一直在尝试用 C++ 编写一个简单的聊天程序,但遇到了一个套接字问题。以下代码正在返回 上次错误代码为(1):0 最后一个错误代码是(2): 0 上次错误代码为 (3):10049 最后的错误代码是
RAII 在调用 exit 时不执行析构函数。所以 WSACleanup不运行。有什么问题?我发现 libnet 使用 WSAStartup没有任何 WSACleanup,为什么? WSAStartu
我目前正在尝试实现一个类来创建和使用 TCP 连接。 (我是 c++ 的新手,所以我可能忘记了一些明显的东西,尽管我一直在认真检查我的代码) 请注意,稍后我将实现第二个类来处理新连接,因此代码的某些部
我从简单的服务器 tutorial 开始在 msdn 网站上,了解如何在客户端和服务器应用程序中使用套接字。 完成教程后,我开始将客户端和服务器代码改编为多线程程序,以便制作 tchat 客户端和服务
我正在学习 C++,我想尝试实现一个非常简单的 HTTP 服务器,它只会输出一条文本消息。我使用 Microsoft Visual Studio 2005。 我得到:第 20 行:警告“wsa”未引用
我从简单的服务器开始 tutorial在 msdn 网站上学习如何在客户端和服务器应用程序中使用套接字。 完成教程后,我开始将客户端和服务器代码调整为多线程程序,以制作 tchat 客户端和服务器。在
客户: //is called when the client tries to log in procedure TLogin_Form.btnLoginClick(Sender: TObj
我有一个需要使用异步 Web 服务的应用程序,该服务需要 header 中的 wsa:MesssageId、wsa:ReplyTo wsa:address 和 ws:To。虽然 wsa:Message
我是 WSO2 ESB 的新手。我正在为基于 SOAP 的服务做服务代理。其中我的端点服务有多种方法。谁能建议我如何在我的流程文件中声明一个特定的操作(方法)。因为我正在获取未找到操作的端点引用。 下
我是一名优秀的程序员,十分优秀!