2010-09-27 2 views
0

Я получаю следующее исключение и не имеют большого понятия о том, что и как должно быть исправлено:Странное исключение при запуске конечной точки WCF

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? Каков правильный способ использовать синтаксический анализ запроса?

ответ

0

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

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

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

+0

спасибо! Я использовал сообщение только потому, что мне нужно вернуть простой текст ASCII. Я попытаюсь вернуть Byte [] и увидит, работает ли он. – BreakPhreak

+0

Вы не получите исключение, если вы вернете Byte [], но почему бы не вернуть строку, если вы просто отправляете обратно текст? –

+0

Отправка назад строки приводит к отправке Unicode с несколькими специальными символами в начале (3 байта). Унаследованное приложение ожидает строку oldskul XML ASCII. Если у вас есть другие рекомендации, я буду рад услышать. – BreakPhreak

Смежные вопросы