Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 在WCF服务中将消息类用作返回类型时出错_Json_Wcf_Message - Fatal编程技术网

Json 在WCF服务中将消息类用作返回类型时出错

Json 在WCF服务中将消息类用作返回类型时出错,json,wcf,message,Json,Wcf,Message,我有WCF服务。该服务是以字符串形式返回结果的。当我运行应用程序时,会收到此错误消息 无法加载操作“GetTemplate”,因为它具有System.ServiceModel.Channels.Message类型的参数或返回类型,或者具有MessageContractAttribute和其他不同类型参数的类型。使用System.ServiceModel.Channels.Message或带有MessageContractAttribute的类型时,该方法不得使用任何其他类型的参数 我对应的代码如

我有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管道,那么流就是一种方式。