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),它解释了开头有趣的字节(字节顺序标记)。字节[]可能是正确的选择。有趣的是,它不是:(只是让你知道传奇还在继续)。再次感谢你的回答。