【发布时间】:2012-01-22 22:41:51
【问题描述】:
我想在我的 Web 服务方法中将 JSON 数据返回给客户端。一种方法是创建SoapExtension 并将其用作我的Web 方法的属性等。另一种方法是简单地将[ScriptService] 属性添加到Web 服务,并让.NET 框架将结果作为{"d": "something"} JSON 返回,返回给用户(d 这是我无法控制的)。但是,我想返回如下内容:
{"message": "action was successful!"}
最简单的方法是编写一个 web 方法,例如:
[WebMethod]
public static void StopSite(int siteId)
{
HttpResponse response = HttpContext.Current.Response;
try
{
// Doing something here
response.Write("{{\"message\": \"action was successful!\"}}");
}
catch (Exception ex)
{
response.StatusCode = 500;
response.Write("{{\"message\": \"action failed!\"}}");
}
}
这样,我在客户端得到的是:
{ "message": "action was successful!"} { "d": null}
这意味着 ASP.NET 将其成功结果附加到我的 JSON 结果中。另一方面,如果我在写入成功消息后刷新响应(如response.Flush();),则会发生以下异常:
发送 HTTP 标头后,服务器无法清除标头。
那么,如何在不改变方法的情况下只获得我的 JSON 结果?
【问题讨论】:
-
尝试设置 response.BufferOutput = true;
标签: asp.net json web-services asmx