gpt4 book ai didi

web-services - 使用 New-WebServiceProxy 在 PowerShell 中添加自定义 SOAP header

转载 作者:行者123 更新时间:2023-12-04 04:50:29 24 4
gpt4 key购买 nike

在 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 消息 header ?

编辑 :
澄清一下,我可以在 PowerShell 中进行与上面 C# 中显示的相同的调用,但 OperationContext.Current 始终为 null。我在 C# 中通过创建 OperationContextScope 来解决这个问题,但这需要 web 服务代理的内部 channel ,PowerShell 的代理似乎没有提供。

最佳答案

您的 C# 代码正在使用 WCF 中的 OperationContext 类。 PowerShell 的 New-WebServiceProxy cmdlet 不使用 WCF,而是基于 System.Web.Services.Protocols.SoapHttpClientProtocol 类创建类。

要获取 SoapHttpClientProtocol 实例以发送自定义 SOAP header ,请使用 SoapExtension,如下所述:
http://blogs.msdn.com/b/kaevans/archive/2007/08/06/programmatically-insert-soapheader-into-soap-request-with-asmx-soapextensions.aspx

由于需要创建一个继承自 SoapExtension 的新类,将博客文章的内容移植到 PowerShell 很可能涉及通过 Add-Type cmdlet 的 TypeDefinition 参数使用嵌入式 C#。

关于web-services - 使用 New-WebServiceProxy 在 PowerShell 中添加自定义 SOAP header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4763616/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com