从powershell调用web服务:“0”;服务器未识别HTTP标头SOAPAction的值;

从powershell调用web服务:“0”;服务器未识别HTTP标头SOAPAction的值;,powershell,wsdl,Powershell,Wsdl,我正在尝试从powershell脚本调用web服务 我不是web服务的作者,也不太了解web服务。(我也只是在PowerShell中升级。) web软件的供应商向我提供了一个.wsdl文件。我对它运行wsdl.exe,然后对生成的.cs文件运行csc.exe,以生成代理.dll文件 在我的powershell脚本中,我正在实例化一个对象,设置其url属性并尝试调用以下方法之一: [Reflection.Assembly]::LoadFrom("$ProxyDllPath\VendorPr

我正在尝试从powershell脚本调用web服务

我不是web服务的作者,也不太了解web服务。(我也只是在PowerShell中升级。)

web软件的供应商向我提供了一个.wsdl文件。我对它运行wsdl.exe,然后对生成的.cs文件运行csc.exe,以生成代理.dll文件

在我的powershell脚本中,我正在实例化一个对象,设置其url属性并尝试调用以下方法之一:

    [Reflection.Assembly]::LoadFrom("$ProxyDllPath\VendorProxy.dll")
    $myVar = new-object VendorObject
    $myVar.url = "http://servername/serverdirectory/serverfile.asmx"
    $myStuff = $myVar.GetStuff()
执行此操作时,会出现异常:

Exception calling "GetStuff" with "0" argument(s): "Server did not recognize the value of HTTP Header SOAPAction: ."
At C:\users\xxx\desktop\xxx.ps1:56 char:55
+     $myStuff = $myVar.GetStuff<<<< ()
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodException
此Web服务的WSDL描述为:

<wsdl:operation name="GetStuff">
  <soap:operation soapAction="" style="document" />
  <wsdl:input>
    <soap:body use="literal" />
  </wsdl:input>
  <wsdl:output>
    <soap:body use="literal" />
  </wsdl:output>
</wsdl:operation>

恐怕我真的不理解例外情况;正如我所说的,web服务并不是我声称有能力的领域

如何确定服务器需要的soap操作,以及如何配置$myVar以使用该soap操作?

通常,“soapAction”的方法名将使用名称空间限定(如“”)。您可能需要检查您的asmx服务

如果您正在运行PowerShell V2(如果能够,您应该这样做),您可以尝试使用构建代理

通常,“soapAction”的方法名将使用名称空间限定(如“”)。您可能需要检查您的asmx服务

如果您正在运行PowerShell V2(如果能够,您应该这样做),您可以尝试使用构建代理

<wsdl:operation name="GetStuff">
  <soap:operation soapAction="" style="document" />
  <wsdl:input>
    <soap:body use="literal" />
  </wsdl:input>
  <wsdl:output>
    <soap:body use="literal" />
  </wsdl:output>
</wsdl:operation>
$MyProxy = New-WebServiceProxy -Uri 'http://servername/serverdirectory/serverfile.asmx' -Namespace 'MyService'