Служба потоков WCF, которая возвращает длину потока и включает входные параметры - PullRequest
3 голосов
/ 12 августа 2010

Я пытаюсь создать потоковую службу WCF. У меня есть два требования, которые я, кажется, спотыкаюсь, пытаясь заставить это работать:

  • Длина потока
  • Входные параметры

Мой контракт на сообщение выглядит так:

[MessageContract]
public class MyStream
{
 [MessageHeader]
 public long StreamSize;

 [MessageBodyMember]
 public Stream StreamData;
}  

Мой рабочий контракт выглядит так:

[ServiceContract]
public interface IStreamService
{
     [OperationContract]
     MyStream GetData(string data);
}

Я получаю сообщение об ошибке при попытке использовать веб-сервис:

Операция 'GetData' не может быть загружен, потому что у него есть параметр или тип возвращаемого типа System.ServiceModel.Channels.Message или тип, который имеет MessageContractAttribute и другие параметры разных типов. когда с помощью System.ServiceModel.Channels.Message или типы с MessageContractAttribute, метод не должны использовать какие-либо другие типы параметры.

Исходя из моего понимания этого поста , мне нужно использовать контракт сообщений, чтобы получить длину моего потока, но когда я переключаюсь с контракта данных на контракт сообщений, мне больше не разрешают проходить во входных параметрах.

Есть ли изменения в конфигурации, которые мне не хватает? Или что-то еще я могу попробовать? Спасибо!

1 Ответ

2 голосов
/ 12 августа 2010

Вы также должны создать MessageContract для запроса.

[MessageContract]
public class GetDataRequest
{
  [MessageBodyMember(Name="data")]
  public string Data { get; set; }
}

Затем вы определяете свою операцию следующим образом:

[OperationContract]
MyStream GetData(GetDataRequest request);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...