странное поведение вызова метода wcf из powershell с использованием new-webproxyservice - PullRequest
3 голосов
/ 14 июня 2011

Может кто-нибудь объяснить мне:

Я построил действительно простой сервис wcf для тестирования.
Используя сервис PowerShell с использованием New-WebServiceProxy, я обнаружил следующее поведение:

если в сервисе wcf у меня есть такой контракт, возвращающий int:

[OperationContract]
int GetDictionaryLength();

вызов этого метода в powershell приводит к ошибке, и определение метода не соответствует ожиданиям

PS C:\ps> $a | Get-Member getdictionarylength | fl *

TypeName: Microsoft.PowerShell.Commands.NewWebserviceProxy.AutogeneratedTypes.WebServiceProxy1_022s_pwdservice_svc_wsdl.PWDService

Имя: GetDictionaryLength

MemberType: Method

Определение: System.Void GetDictionaryLength (System.Int32 &, mscorlib, версия = 4.0.0.0, Culture = нейтрально, PublicKeyToken = b77a5c561934e089 GetDictionaryLengthResult, System.Boolean &, mscorlib, Версия = 4.0.0.0, Культура = нейтральная, PublicKeyToken = b77a5c561934e089 GetDictionaryLengthResultSpecified)

изменение договора следующим образом:

[OperationContract]
string GetDictionaryLength();

проделайте большую работу, названную в PowerShell.

Почему это?

WCF в .net 4.0 Powershell is V2

Ответы [ 2 ]

4 голосов
/ 15 марта 2012

Поэкспериментировав с вашим ответом, а затем, наконец, обнаружите этот ответ , кажется, что все ваши проблемы исчезнут, если вы просто добавите [XmlSerializerFormat] к контракту на операцию, а сигнатура метода вернется в нормальное состояние. По крайней мере, мои проблемы возникли при тестировании на платформе 2.0 .Net и powershell.

1 голос
/ 17 июня 2011

наконец я обнаружил это:

PS C:\ps> [int]$int = 0
PS C:\ps> $bool = $true
PS C:\ps> $a.DictionaryLength([ref]$int, [ref]$bool)
PS C:\ps> $int
61

Я создал решение с .net 2.0 (собственная платформа powershell) для клиентского приложения, которое потребляет мой wfc (.net 4.0). и определение для метода DictionaryLegth () было:

void myservice.DictionaryLength(out int DictyionaryLengthResult, out bool DictonaryLengthSpecified)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...