New-WebServiceProxy не работает - PullRequest
2 голосов
/ 17 декабря 2010

Я пытаюсь использовать команду 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

В чем здесь проблема?

Edit; Не знаю, уместно ли это, но Сервисы используют несколько пользовательских заголовков SOAP для учетных данных.

Ответы [ 3 ]

3 голосов
/ 31 декабря 2010

Попробуйте запустить утилиту svcutil.exe из Windows SDK с параметром /validate. Посмотрите на использование утилит для деталей об использовании параметра для /validate. Обратите внимание, что в крайнем случае вы можете просто использовать svcutil.exe для создания прокси-класса, который вы затем скомпилируете. Еще накануне PowerShell 2.0 и New-WebProxy мы создавали прокси веб-служб .

.
1 голос
/ 04 января 2011

Какие привязки WCF вы используете?

По умолчанию проект WCF, использующий wsHttpBinding, предполагает, что клиент будет поддерживать больше функций WS- *, чем доступно в прокси, созданном командлетом powershell new-webserviceproxy.

Измените (или создайте новую) привязку конечной точки, которая использует basicHttpBinding, и убедитесь, что HTTP GET поддерживается для метаданных;Например:

<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>
1 голос
/ 03 января 2011

Вы также можете попробовать версию сценария New-WebServiceProxy , основанную на wsdl.exe

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...