【发布时间】:2010-05-26 15:57:38
【问题描述】:
我正在编写我所说的 POJ(普通旧 JSON)WCF Web 服务 - 一种接受并发出标准 JSON 的内容,没有 ASP.NET Ajax 喜欢添加的废话。
似乎需要三个步骤来完成:
- 在端点标签中将“enableWebScript”更改为“webHttp”
- 用 [WebInvoke(ResponseFormat = WebMessageFormat.Json)] 装饰方法
- 添加 [AspNetCompatibilityRequirements(RequirementsMode) 的咒语 = AspNetCompatibilityRequirementsMode.Allowed)] 到服务合同
这对我来说一切正常 - 我可以传入并返回漂亮的纯 JSON。
如果我删除 WebInvoke 属性,那么我会返回 XML,所以它肯定会做它应该做的事情。但令我感到奇怪的是,指定 JSON 输出的选项出现在此处而不是在配置文件中。假设我也想将我的方法公开为 XML 端点 - 我将如何做到这一点?目前我能看到的唯一方法是使用第二种方法,它做同样的事情,但没有指定 WebMethodFormat.Json。然后冲洗并重复我服务中的每种方法?呸。
在属性中指定输出应该序列化为 JSON 似乎完全违背了 WCF 的理念,在 WCF 中实现服务是一种传输和编码不可知的方式,留下了如何移动数据的令人讨厌的细节转到配置文件。
有没有更好的方法来做我想做的事?还是我们被这个尴尬的属性困住了?还是我对 WCF 的理解不够深入?
【问题讨论】:
-
感谢您提出这个问题