C# WCF端点启动时出现奇怪的异常

C# WCF端点启动时出现奇怪的异常,c#,.net,http,wcf,C#,.net,Http,Wcf,我遇到了以下异常情况,对于该如何修复该异常,我没有太多的线索: 无法加载操作“ShowData”,因为它的参数或返回类型为System.ServiceModel.Channels.Message或具有MessageContractAttribute和其他不同类型参数的类型。使用System.ServiceModel.Channels.Message或带有MessageContractAttribute的类型时,该方法不得使用任何其他类型的参数。 我的代码: [ServiceContract(Se

我遇到了以下异常情况,对于该如何修复该异常,我没有太多的线索:

无法加载操作“ShowData”,因为它的参数或返回类型为System.ServiceModel.Channels.Message或具有MessageContractAttribute和其他不同类型参数的类型。使用System.ServiceModel.Channels.Message或带有MessageContractAttribute的类型时,该方法不得使用任何其他类型的参数。

我的代码:

[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);
  } 

我猜它说我不能把
消息
int
混在一起?解析请求的正确方法是什么?

由于返回WCF
消息
类型,因此出现错误。这意味着您必须从输入中删除数据参数,或者将其设置为
消息
类型,而不是
int

消息
类是WCF基础结构的一个基本部分。这里有记录:


最好定义自己的数据契约类型,而不是使用
消息

谢谢!我使用该消息只是因为我需要返回纯ASCII文本。我将尝试返回Byte[]并查看它是否有效。如果返回Byte[],则不会出现异常,但如果只是返回文本,为什么不返回字符串呢?返回字符串将导致返回Unicode,并在开始处包含一些特殊字符(3个字节)。旧版应用程序需要XML ASCII oldskul字符串。如果你还有其他建议,我很高兴听到。@BreakPhreak-啊,对了。NET中的字符串是unicode(UTF-16),它解释了开头有趣的字节(字节顺序标记)。字节[]可能是正确的选择。有趣的是,它不是:(只是让你知道传奇还在继续)。再次感谢你的回答。