如何阻止我的ASP.NET Web服务返回xml数据?

时间:2009-08-17 05:53:07

标签: asp.net json web-services http-headers

我有一个简单的ASP.NET Web服务。我想要返回一串json作为结果。默认情况下,我的webservice将json结果包装在某个xml中。

例如

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://webservice.streetadvisor.com/">{.... json result in here ... }</string>

Booo。

  • 有什么方法可以让我的webservice不返回一些xml,但只是把我的结果写成原始输出?
  • 我可以在Web服务中定义HTTP-StatusCode吗?例如。 200, 201, 202, 404, 500等等?
  • 我可以定义响应类型吗?例如。 application/json

干杯!

3 个答案:

答案 0 :(得分:3)

您可以通过创建.ashx处理程序而不是普通的Web服务来相当轻松地完成此操作 - 但此时您丢失了许多围绕Web服务的基础结构,特别是在结构化中解释来自客户端的数据的任何内容SOAP给你的方式。

以下是creating an RSS feed作为“原始”处理程序的示例,这里是more general tutorial。这并不是特别棘手 - 如果那些对你没有多大帮助,那就去搜索一下ashx吧,你会得到很多点击量。

我不知道从Web服务项目做起来有多容易 - 我只是从一个直接的ASP.NET Web应用程序项目中完成的。它可能“正常工作” - 值得一试。

答案 1 :(得分:2)

有时如果我想要返回JSON,我只需使用.aspx页面:

Response.Clear();
Response.ContentType = "text/javascript";

然后使用.NET Json框架(如1 here)我创建了json,我希望它返回。

答案 2 :(得分:0)

您只需使用

即可
[WebMethod]
[System.Web.Script.Services.ScriptMethod(ResponseFormat = System.Web.Script.Services.ResponseFormat.Json)]

这对我有用。