svcutil игнорирует параметр асинхронного вызова WCF

У меня есть сервисный интерфейс WCF:

[ServiceContract(Namespace = "net.pipe://QFX_DLL/TradingService")]
public interface IGenericTradingInterface  {

    [OperationContract]
    void GetServerInformation(out ServerAttributes attributes);
}

Хост для этого работает правильно. Я создаю клиентский прокси-объект с помощью svcutil следующим образом:

svcutil.exe /language:cs /out:generatedProxy.cs /config:app.config net.pipe://localhost/QFX_DLL/mex /async /tcv:Version35

Сгенерированный прокси для асинхронного вызова выглядит так:

public void GetServerInformationAsync()
{
    this.GetServerInformationAsync(null);
}

Как видите, атрибуты параметра out полностью отсутствуют! Неасинхронные методы выглядят нормально. С этим объявлением GetServerInformationAsync я не могу вернуть результат. Что тут происходит?


person Juergen    schedule 28.09.2011    source источник


Ответы (1)


Параметр out (и любые результаты) будет находиться в классе EventArgs, который передается событию, которое запускается после завершения GetServerInformation (вероятно, GetServerInformationCompleted). Имя свойства будет либо Result (что, вероятно, имеет место в случае операции, возвращающей только 1 значение), либо имя параметра (атрибуты).

person carlosfigueira    schedule 28.09.2011
comment
Да, я тоже об этом думал, но когда я хочу прочитать результат следующим образом: Console.WriteLine(ServerInfo Time: {0}, e.Result.CurrentTime.ToString()); затем я получаю исключение: System.Reflection.TargetInvocationException, поэтому я подумал, что это связано с отсутствующим параметром. - person Juergen; 29.09.2011
comment
Решение состоит в том, что нельзя получить и установить поля структуры, переданные методу WCF. Еще раз спасибо :-) - person Juergen; 29.09.2011
comment
Проверьте свойство InnerException TargetInvocationException, оно должно дать вам больше информации о проблеме. И вы, безусловно, можете иметь геттеры/сеттеры для типов, передаваемых методами WCF, у вас есть какие-либо другие проблемы? - person carlosfigueira; 29.09.2011