首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在配置文件中应用[WebInvoke(ResponseFormat = WebMessageFormat.Json)]

在配置文件中应用[WebInvoke(ResponseFormat = WebMessageFormat.Json)]
EN

Stack Overflow用户
提问于 2010-05-26 15:57:38
回答 1查看 3.6K关注 0票数 6

我正在编写我所指的POJ (普通老JSON) WCF服务--一个接收和发布标准JSON的服务,而不是ASP.NET Ajax喜欢添加的垃圾。

要做到这一点,似乎有三个步骤:

WebMessageFormat.Json)

  • Add

  • 将端点的标记

  • 中的"enableWebScript“更改为"webHttp”,用WebInvoke(ResponseFormat =AspNetCompatibilityRequirementsMode.Allowed的咒语)来装饰服务合同

这一切对我来说都是正常的--我可以进来,并被返回,很好,普通的JSON。

如果我删除了WebInvoke属性,那么就会得到XML返回,因此它肯定是在做它应该做的事情。但我觉得奇怪的是,指定JSON输出的选项出现在这里,而不是在配置文件中。假设我也希望将我的方法公开为XML端点--我将如何做到这一点?目前,我能看到的唯一方法是有第二个方法,它可以做完全相同的事情,但是没有指定WebMethodFormat.Json。然后冲洗并重复我的每一种方法?糟透了。

在属性中将输出序列化为JSON似乎完全违背了WCF的理念,WCF实现该服务是一种与传输和编码无关的方式,留下了数据将如何移动到配置文件的令人讨厌的细节。

有没有更好的方法来做我想做的事?还是我们被这个尴尬的属性困住了?还是我对WCF的理解不够深?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-05-26 18:52:00

我还没有完全测试这一点,但是,我看了一下反射器中的WebMessageFormat,以及它在代码中的用法。

webHttp元素有一个名为defaultOutgoingResponseFormat的属性,可以设置为"Json“或"Xml”。

代码语言:javascript
复制
    <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,如下面所述。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2914633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档