Странное исключение при запуске конечной точки WCF - PullRequest
0 голосов
/ 27 сентября 2010

Я получаю следующее исключение и не очень понимаю, что и как должно быть исправлено:

The operation 'ShowData' could not be loaded because it has a parameter or return type of type System.ServiceModel.Channels.Message or a type that has MessageContractAttribute and other parameters of different types. When using System.ServiceModel.Channels.Message or types with MessageContractAttribute, the method must not use any other types of parameters.

Мой код:

[ServiceContract(SessionMode=SessionMode.NotAllowed)] 
public interface IHelper 
{
  [WebGet(UriTemplate = "/cgi/manager.exe?GetData={data}")]
  [OperationContract]
  Message ShowData(int data);
}

public class Helper : IHelper 
{
  public Message ShowData(int data)
  {
    var result = new StringBuilder(...);

    foreach (...)
    {
      result.AppendFormat(...);
    }

    result.AppendLine(...);

    return WebOperationContext.Current.CreateTextResponse(result.ToString(), "text/xml", Encoding.ASCII);
  } 

Я думаю, это говорит о том, что я не могу смешать Message с int? Как правильно полагаться на синтаксический анализ запроса, чем?

1 Ответ

0 голосов
/ 27 сентября 2010

Вы получаете ошибку, потому что возвращаете тип WCF Message. Это означает, что вам придется либо удалить параметр данных из входных данных, либо сделать его типом Message вместо int.

Класс Message является фундаментальной частью инфраструктуры WCF. Здесь задокументировано: http://msdn.microsoft.com/en-us/library/ms734675.aspx

Лучше определить собственный тип контракта с данными, чем использовать Message.

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