如何在没有' d'的情况下流式传输ScriptMethod JSON响应?宾语?

时间:2015-04-15 21:48:15

标签: asp.net asmx scriptservice

我有一个非常基本的ScriptMethod

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public void GetData(string token)
{
    Context.Response.ContentType = "text/json";
    Context.Response.Clear();
    Context.Response.BufferOutput = true;

    List<string> data = new List<string>() { "foo", "bar", "foobar" };

    using (var stream = new StreamWriter(Context.Response.OutputStream))
    {
        JsonSerializer.Create().Serialize(stream, data);
    }

    Context.Response.OutputStream.Flush();
}

如果我通过GET点击此API,我会收到一个可接受的响应:

["foo","bar","foobar"]

如果我通过POST点击此API,我会收到格式错误的回复:

["foo","bar","foobar"]{"d":null}

如何使此函数编写响应,而不附加d对象?

1 个答案:

答案 0 :(得分:0)

您不必自己处理序列化,让框架为您执行此操作。

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public List<string> GetData(string token)
{
    return new List<string>() { "foo", "bar", "foobar" };
}

我认为你会得到的是d[ [ "foo", "bar", "foobar" ] ],但至少它是有效的。 d[]构造是安全的东西。