C#Web Service不会输出JSON,只输出XML

我正在尝试将jQuery和JSON与我编写的C#Web服务一起使用。 无论如何,以下代码仅以XML格式输出。

Web服务代码

[WebMethod] [ScriptMethod(ResponseFormat = ResponseFormat.Json)] public string HelloWorld() { return "Hello World!"; } 

我也将这些属性分配给了这个类

 [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [ScriptService] 

jQuery代码

 $.ajax({ type: "POST", contentType: "application/json; charset=utf-8", url: "ScheduleComputerDS.asmx/HelloWorld", data: "{}", dataType: "jsonp", success: function(data) { alert(data); } }); 

ASMX页面始终以内容类型“text / xml”返回。 我错过了什么?

编辑:回应几个答案:

如果我的数据类型只是“json”,那么内容仍然是XML,jQuery也不会调用我的回调函数。 如果我添加“&callback =?” 到URL,IIS抛出HTTP 500错误。

我的类inheritance自“System.Web.Services.WebService”。

从对你们家伙的答案做一些研究,看起来我确实需要弄乱WCF。 不幸的是,返回的JSON更多是为MS Ajax设计的,对我来说是一个无用的膨胀。 我可能会研究像Jayrock这样的开源库或类似的东西。

感谢你的帮助!

据我所知,ScriptService属性只允许服务自动创建JavaScript代理(通过将/ js附加到端点地址 – 在您的情况下为ScheduleComputerDS.asmx / js)。 它不允许您按照您尝试的方式调用服务上的操作。

您可以使用RESTful WCF服务(需要.NET 3.5),您可以通过HTTP GET发送形状正确的URI来访问该服务。

我觉得有一个错字:

 dataType: "jsonp", 

应该:

 dataType: "json", 

Rich Strahl有一个非常基本的post,可以帮助你解决这个问题。

http://www.west-wind.com/weblog/posts/164419.aspx

你试过数据类型json吗?

另外,请看Encosia 使用jQuery来处理ASP.NET JSON Web服务的文章。 关于常见的陷阱也有一些很好的信息。