我正在编写我所指的POJ (普通老JSON) WCF服务--一个接收和发布标准JSON的服务,而不是ASP.NET Ajax喜欢添加的垃圾。
要做到这一点,似乎有三个步骤:
WebMessageFormat.Json)
这一切对我来说都是正常的--我可以进来,并被返回,很好,普通的JSON。
如果我删除了WebInvoke属性,那么就会得到XML返回,因此它肯定是在做它应该做的事情。但我觉得奇怪的是,指定JSON输出的选项出现在这里,而不是在配置文件中。假设我也希望将我的方法公开为XML端点--我将如何做到这一点?目前,我能看到的唯一方法是有第二个方法,它可以做完全相同的事情,但是没有指定WebMethodFormat.Json。然后冲洗并重复我的每一种方法?糟透了。
在属性中将输出序列化为JSON似乎完全违背了WCF的理念,WCF实现该服务是一种与传输和编码无关的方式,留下了数据将如何移动到配置文件的令人讨厌的细节。
有没有更好的方法来做我想做的事?还是我们被这个尴尬的属性困住了?还是我对WCF的理解不够深?
发布于 2010-05-26 18:52:00
我还没有完全测试这一点,但是,我看了一下反射器中的WebMessageFormat,以及它在代码中的用法。
webHttp元素有一个名为defaultOutgoingResponseFormat的属性,可以设置为"Json“或"Xml”。
<behaviors>
<endpointBehaviors>
<behavior name="ServicesJSONEndpointBehavior">
<webHttp defaultOutgoingResponseFormat="Json"/>
</behavior>
</behaviors>我也遇到过同样的问题,通常都是在网上搜索而没有多少信息的情况下四处游走。
我将尝试使用多个配置的endpointBehaviors并返回报告。
2011年5月6日更新
FYI --我已经放弃了香草WCF和它所有的拉毛场景,这应该是简单的,更倾向于ServiceStack ( http://servicestack.net/ )。如果您希望在HTTP上建立一个标准的REST样式/面向文档的服务,它可以支持JSON / XML / CSV (以及未来的协议缓冲区),并且允许您轻松地将干净的MVC风格的路由组合在一起,请仔细检查一下ServiceStack。有许多事情,ServiceStack将非常容易和干净地处理,这往往是一个主要的皮塔,因为一些不稳定的配置问题或类似的标准WCF。ServiceStack使用它自己的JSON序列化程序,这是一个额外的好处,它的性能优于DataContractJsonSerializer和JSON.NET,如下面所述。
https://stackoverflow.com/questions/2914633
复制相似问题