Json 在WCF服务中将消息类用作返回类型时出错
我有WCF服务。该服务是以字符串形式返回结果的。当我运行应用程序时,会收到此错误消息 无法加载操作“GetTemplate”,因为它具有System.ServiceModel.Channels.Message类型的参数或返回类型,或者具有MessageContractAttribute和其他不同类型参数的类型。使用System.ServiceModel.Channels.Message或带有MessageContractAttribute的类型时,该方法不得使用任何其他类型的参数 我对应的代码如下: 接口:-Json 在WCF服务中将消息类用作返回类型时出错,json,wcf,message,Json,Wcf,Message,我有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时,我了解到,在使用消息时,我们不能使用任何可序列化对象作为参数或返回类型。我想接受templateid作为参数,以便获得相应的模板。是否有任何方法可以接受参数而不出现此错误
提前谢谢
Vipin Menon错误消息基本上可以翻译为:使用消息类型是一个要么全有要么全无的命题,如果您有消息类型输出,那么您必须为操作使用一个消息参数,要么根本没有参数。您应该在使用WCF消息类型以及它可以为您做什么的网站上阅读这篇文章。Message类将编码抽象级别从使用标准.NET类降低到WCF“管道”级别,在该级别中,您可以操作操作正在接收的soap XML消息,并手动创建操作将发送的soap XML消息
不清楚您为什么要尝试使用消息作为返回类型,但您不能以问题中示例代码的方式使用它。错误消息基本上转化为:使用消息类型是一个全有或全无的命题,如果有消息类型输出,则必须为操作提供一个消息参数,或者根本没有参数。您应该在使用WCF消息类型以及它可以为您做什么的网站上阅读这篇文章。Message类将编码抽象级别从使用标准.NET类降低到WCF“管道”级别,在该级别中,您可以操作操作正在接收的soap XML消息,并手动创建操作将发送的soap XML消息
不清楚您为什么尝试使用Message作为返回类型,但您不能以问题中示例代码的方式使用它。感谢Saez。我把它修好了。。我将返回类型从消息更改为流。现在它可以正常工作了。我使用消息作为返回类型,以获得干净的Jason输出。。当作为字符串返回时,结果包含转义字符。消息在不带参数的情况下运行良好。是的,如果您不需要进入带有标题的WCF管道,那么流就是一种方式。谢谢Saez。我把它修好了。。我将返回类型从消息更改为流。现在它可以正常工作了。我使用消息作为返回类型,以获得干净的Jason输出。。当作为字符串返回时,结果包含转义字符。消息在不带参数的情况下运行良好。是的,如果您不需要进入带有标题的WCF管道,那么流就是一种方式。