WCF - В конечных точках потока все контракты операций требуют потока в качестве возврата или параметра для контракта для работы? - PullRequest
0 голосов
/ 07 апреля 2010

Мне интересно, требуется ли в той же конечной точке, для которой был установлен потоковый транспортный режим, все контракты операций в этой службе требовать наличия потока в параметре или в качестве возвращаемого типа для этой службы?

Вкратце: может ли конечная точка с поддержкой потоковой передачи содержать контракты операций, для которых поток не является параметром или типом возврата?

Ответы [ 2 ]

2 голосов
/ 07 апреля 2010

Проверьте документы MSDN на Потоковая передача сообщений :

Ограничения на потоковые передачи

Использование режима потоковой передачи вызываетвремя выполнения для применения дополнительных ограничений.

Операции, выполняемые в поточном транспорте, могут иметь контракт не более чем с одним входным или выходным параметром.Этот параметр соответствует всему телу сообщения и должен быть Message, производным типом Stream или реализацией IXmlSerializable. Наличие возвращаемого значения для операции эквивалентно наличию выходного параметра.

Таким образом, если у вас есть контракт на обслуживание, который будет отображаться через конечную точку с включенной потоковой передачей, все операции по этому контракту должны использовать Message или Stream в качестве единственного параметра.

2 голосов
/ 07 апреля 2010

Да, вы можете сохранить тот же контракт, даже если вы используете конечную точку потока, не имеет значения, содержит ли он поток в качестве типа возврата или параметра.

Чтобы он работал, вам нужно изменитьнекоторые из участников контракта к заголовкам.

[MessageContract]
public class MyContract
{
    [MessageHeader]
    public string FileName { get; set; }

    [MessageBodyMember]
    public Stream Content { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...