Странное поведение вызова метода wcf из powershell с использованием new-webproxyservice

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

Я построил действительно простой сервис 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: метод

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

изменить контракт следующим образом:

[OperationContract]
string GetDictionaryLength();

сделать большую работу под названием PowerShell.

Почему это?

WCF в.net 4.0 Powershell является V2

2 ответа

Решение

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

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

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)
Другие вопросы по тегам