【发布时间】:2011-01-21 20:44:40
【问题描述】:
在 C# 中,我可以执行以下操作:
var header = MessageHeader.CreateHeader("MyHeader", "http://mynamespace", "Header value");
OperationContext.Current.OutgoingMessageHeaders.Add(header);
这会将以下内容添加到 SOAP 消息中:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<MyHeader xmlns="http://mynamespace">Header value</MyHeader>
....
</s:Header>
...
在调用由 New-WebServiceProxy PowerShell commandlet 生成的代理上的方法时,如何类似地添加自定义传出 SOAP 消息头?
编辑: 澄清一下,我可以在上面的 C# 中显示的 PowerShell 中进行相同的调用,但 OperationContext.Current 始终为空。我通过创建 OperationContextScope 在 C# 中解决了这个问题,但这需要 Web 服务代理的内部通道,而 PowerShell 的代理似乎没有提供。
【问题讨论】:
-
澄清一下,我可以在 PowerShell 中进行与上面 C# 中显示的相同的调用,但 OperationContext.Current 始终为空。我通过创建 OperationContextScope 在 C# 中解决了这个问题,但这需要 Web 服务代理的内部通道,而 PowerShell 的代理似乎没有提供。
-
请用此澄清更新您的问题。
-
仅供参考,我最终使用代理的 CookieContainer 设置 cookie 来传递我需要的信息。从杰森的回答看来,我最初的目标可能是可能的,但有些涉及。如果让我重来一遍,我可能会使用 svcutil 生成的 WCF 代理。
标签: web-services soap powershell soapheader