New-WebServiceProxy失败

时间:2010-12-16 21:09:30

标签: powershell wcf

我正在尝试使用PowerShell命令New-WebServiceProxy来创建与WCF服务的连接。

我已启动并运行WCF服务(并使用C#代码),但以下PowerShell代码失败:

PS C:\>$uri = "http://localhost/Person.svc?wsdl"
PS C:\>$client = New-WebServiceProxy -Uri $uri

New-WebServiceProxy : Exception has been thrown by the target of an invocation
At line:1 char:30
+ $client = New-WebServiceProxy <<<<  -Uri $uri
+ CategoryInfo          : NotSpecified: (:) [New-WebServiceProxy], TargetInvocationException
+ FullyQualifiedErrorId : System.Reflection.TargetInvocationException,Microsoft.PowerShell.Commands.NewWebServiceProxy

这可能是什么问题?

编辑;不知道它是否相关,但服务使用一些自定义SOAP标头作为凭据。

3 个答案:

答案 0 :(得分:3)

尝试使用svcutil.exe参数从Windows SDK执行/validate实用程序。有关/validate的参数用法的详细信息,请查看实用程序用法。请注意,在紧要关头,您可以使用svcutil.exe来创建您将编译的代理类。回到PowerShell 2.0和New-WebProxy前一天,这是how we created web service proxies

答案 1 :(得分:1)

您还可以尝试script version of New-WebServiceProxy,它基于wsdl.exe

答案 2 :(得分:1)

您使用的是什么WCF绑定?

默认情况下,使用wsHttpBinding的WCF项目假设客户端将支持比powershell的new-webserviceproxy cmdlet创建的代理中更多的WS- *功能。

更改(或创建新的)使用basicHttpBinding的端点绑定,并确保元数据支持HTTP GET; 。e.g,:

<system.serviceModel>
    <services>
        <service name="WcfService1.Service1" behaviorConfiguration="WcfService1.Service1Behavior">
            <endpoint address="" binding="basicHttpBinding" contract="WcfService1.IService1">
            </endpoint>
        </service>
    </services>
    <behaviors>
        <serviceBehaviors>
            <behavior name="WcfService1.Service1Behavior">
                <serviceMetadata httpGetEnabled="true"/>
            </behavior>
        </serviceBehaviors>
    </behaviors>
</system.serviceModel>