我对一件事感到困惑。正如我读过的Web服务使用SOAP协议进行通信,它是一个基于XML的协议;我期待asp.net web服务上的经典HelloWorld方法返回基于xml的数据。
但是当我与Fiddler核实时,我发现Response Textview有一个JSON字符串而不是XML结构,如:
{“d”:“Hello World”}
这是否意味着asp.net web-service实现返回嵌入的'string'类型作为名为'd'的属性的值?
答案 0 :(得分:2)
Web服务不必使用SOAP作为协议。 WCF允许您为Web服务使用各种协议。 SOAP和JSON只是其中两个选项。
答案 1 :(得分:1)
如果您通过POST请求ASMX服务返回JSON,其内容类型包含application/json
。更多信息:http://encosia.com/2010/03/03/asmx-and-json-common-mistakes-and-misconceptions/
它们的返回值不仅限于字符串。如果返回集合类型,则会获得JSON数组。如果返回服务器端类,则会将其序列化为正确的JSON键/值对以表示该对象。
.d
是一个正交问题。这是一种安全功能,可以阻止针对JavaScript的Array构造函数的特定攻击。更多信息:http://encosia.com/2009/02/10/a-breaking-change-between-versions-of-aspnet-ajax/
答案 2 :(得分:0)
确定。我在这里找到了答案:
“ASP.NET AJAX将JSON消息发送到Web服务,而不是通常与Web服务相关联的标准简单对象访问协议(SOAP)调用。这导致整体上更小的请求和响应消息。它还允许更高效的客户端自ASP.NET AJAX JavaScript库优化以处理JSON对象以来,对数据的处理。“
更多细节: http://www.asp.net/ajax/tutorials/understanding-asp-net-ajax-web-services
答案 3 :(得分:0)
正如您所看到的,here最新版本的.NET Framework支持JSON响应。