标签: new-webserviceproxy

为什么powershell会向Web服务方法签名添加其他参数

我正在尝试使用Powershell从命令行ping几个WCF Web服务.例如

我有一个WCF操作

[OperationContract]
string DoWork(string name);
Run Code Online (Sandbox Code Playgroud)

我可以使用Powershell来调用它.

$proxy = New-WebServiceProxy -Uri 'http://localhost/TestService/Service.svc'
$proxy.DoWork('Hello World')
Run Code Online (Sandbox Code Playgroud)

只要输入参数和返回类型是字符串,这样就可以正常工作.但是,如果我引入整数,生成的方法签名和返回类型会生成额外的paramSpecified属性.

请考虑以下具有数据协定返回类型的方法.

[DataContract]
public class SimpleClass
{
    [DataMember]
    public string Name { get; set; }
    [DataMember]
    public int Count { get; set; }
}

... 

[OperationContract]
SimpleClass DoWorkD(string name, int howMany);
Run Code Online (Sandbox Code Playgroud)

问题1

该方法的签名是错误的并且有一个额外的参数bool howManySpecified.

$proxy = New-WebServiceProxy -Uri 'http://localhost/TestService/Service.svc'
$method = $proxy | Get-Member -Name DoWorkD
$method.Definition

Microsoft.PowerShell.Commands.NewWebserviceProxy.AutogeneratedTypes.WebServiceProxy3alhost_TestService_Service_svc.SimpleClass, -nv8lxgh, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null DoWorkD(string name, int howMany, bool howManySpecified)
Run Code Online (Sandbox Code Playgroud)

问题2

DataContract类的返回代理还具有XXXSpecified非字符串属性的附加属性.

______________________________________________________________________ …
Run Code Online (Sandbox Code Playgroud)

powershell wcf web-services powershell-2.0 new-webserviceproxy

6
推荐指数
1
解决办法
3572
查看次数

Powershell不会从NewWebServiceProxy捕获异常

我从NewWebServiceProxy cmdlet捕获异常时遇到问题

try {
    $myService = New-WebServiceProxy -Uri "http://localhost/someservice.svc"
}
catch {
    Write-Log ([string]::Format("Error : {0}", $_.Exception.Message))
}
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我得到了这个未处理的异常:New-WebServiceProxy:

请求失败,HTTP状态为404:未找到.在C:\ Users\SomeUser\AppData\Local\Temp\d052b604-38ad-4827-b952-4ebc66e79c69.ps1:2 char:18 + $ myService = New-WebServiceProxy -Uri "http://localhost/someservice.svc" + ~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CategoryInfo:ObjectNotFound :( http://localhost/someservice.svc:Uri)[New-WebServiceProxy],WebExc eption + FullyQualifiedErrorId:WebException,Microsoft.PowerShell.Commands.NewWebServiceProxy

有人可能会问我为什么尝试捕获不捕获此异常?谢谢你的任何aswer

powershell web-services exception-handling exception new-webserviceproxy

4
推荐指数
1
解决办法
4214
查看次数