当前位置: 首页 > 编程语言 > C#

从WCF返回多个响应分享

时间:2023-04-10 13:42:32 C#

从WCF返回多个响应我有一个WCF服务,服务中有一个名为GetStudentList()的方法。当它返回单个响应时工作正常。像这样的[WebGet(ResponseFormat=WebMessageFormat.Xml,BodyStyle=WebMessageBodyStyle.WrappedRequest)]ListGetStudentList();但我想返回多个响应,即像这样的xml和json;是否可以?如果是,如何?它适用于.NET4.0,但不是您指定的方式。.NET4.0为WebHttp行为添加了新参数:当使用自动格式选择时,响应的格式基于:因此,如果您使用JSON请求调用REST服务,您将获得JSON。如果您使用POX请求调用它,您将获得XML。自动格式选择的完整描述在MSDN中。我认为不可能通过一次调用将对象作为Json和XML返回。在这方面,将WCF视为普通方法调用;你调用一个方法,你会得到一个序列化的返回值。一旦服务向调用者返回响应,调用就完成了。仔细考虑为什么要使用这两种响应类型;它们都是对象序列化的信息通用标准,对于WCF,只有在直接使用序列化响应文本时才需要两者。如果可能,我会重构客户端以使用相同的响应类型。如果确实需要两种类型,最简单的解决方法是提供此方法的两个“重载”,并使每个客户端类型足够智能,知道它需要进行哪个调用。因为区别不在于方法签名,所以它不是真正的重载;您必须按名称(GetStudentListJSON与GetStudentListXML)或通过查找不同服务类中的方法来区分它们。当您需要以另一种格式序列化的对象时,您也可以始终返回一种响应类型并通过反序列化/重新序列化在客户端转换它。这确实需要您使用您在调用的客户端控制的.NET代码。我不知道如何从服务操作中获得2个输出。您始终可以获取XML(序列化DataContract),然后获取“JSON序列化”。这是你如何做的。列表studentList=GetStudent();字符串jsonString=JsonSerialize(studentList.GetType(),studentList);然后在实用类中添加这个函数:以上就是C#学习教程的全部内容:WCF返回多响应分享,如果对大家有用,需要了解更多C#学习教程,希望大家多多付出注意—publicstaticstringJsonSerialize(Typetype,objectobjectGraph){MemoryStreammemoryStream=newMemoryStream();尝试{System.Runtime.Serialization.Json.DataContractJsonSerializerserializer=newSystem.Runtime.Serialization.Json.DataContractJsonSerializer(type);serializer.WriteObject(memoryStream,objectGraph);返回Encoding.Default.GetString(memoryStream.ToArray());}catch(Exceptionex){抛出ex;}finally{if(memoryStream!=null)memoryStream.Close();}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: