Ошибка при использовании класса сообщения в качестве типа возврата в службе WCF - PullRequest
1 голос
/ 12 марта 2012

У меня служба WCF. Служба такова, что возвращает результат в виде строки. Когда я запускаю приложение, я получаю это сообщение об ошибке.

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

Мой соответствующий код выглядит так: Интерфейс: -

[OperationContract]
[WebGet(
 ResponseFormat = WebMessageFormat.Json,
        BodyStyle = WebMessageBodyStyle.Wrapped,
        UriTemplate = "GetTemplate/templateid={templateID}"
        )]
    Message GetTemplate(string templateID);

Реализация: -

 public Message GetTemplate(string templateID)
    {
        string jsonText = TemplateManager.GetJSONTemplate(templateID);
        return WebOperationContext.Current.CreateTextResponse(jsonText,
         "application/json; charset=utf-8", Encoding.UTF8);
    }

Когда я погуглил t, я узнал, что мы не можем использовать какой-либо сериализуемый объект в качестве параметра или возвращаемого типа при использовании Message. Я хочу принять templateid в качестве параметра, чтобы получить соответствующий шаблон. Есть ли способ принять параметр без этой ошибки?

Заранее спасибо.

Випин Менон

1 Ответ

1 голос
/ 12 марта 2012

Сообщение об ошибке в основном переводится следующим образом: использование типа сообщения является предложением типа «все или ничего», если у вас есть вывод типа сообщения, то у вас должен либо один параметр сообщения для операции, либо нет параметрасовсем.Вы должны прочитать эту старую, но хорошую статью MSDN об использовании типа сообщения WCF и о том, что он может сделать для вас.Класс Message понижает уровень абстракции кодирования от использования стандартных классов .NET до уровня "водопровода" WCF, где вы манипулируете сообщением XML-мыла, которое получает ваша операция, и вручную создаете сообщение XML-мыла, которое будет отправлять операция.

Непонятно, почему вы пытаетесь использовать Message в качестве типа возврата, но вы не можете использовать его в качестве примера кода в вопросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...