私のWebサービスメソッドで、JSONデータをクライアントに返す必要があります。 1つの方法は、SoapExtension
を作成し、それを私のWebメソッドなどの属性として使用することです。もう1つの方法は、[ScriptService]
属性をWebサービスに追加して、.NETフレームワークが結果を{"d": "something"}
JSONとして返すようにすることです(d
ここ私のコントロールから何かである)。しかし、私は何か返したい:WebServiceのResponse.Write()
{"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();
など)を書き込んだ後に応答をフラッシュする場合は、例外が言うことが起こる:
Serverは、HTTPヘッダの後の明確なヘッダが送信されていることができません。
アプローチを変更せずにJSON結果を取得するにはどうすればよいですか?
は真response.BufferOutput =を設定してみてください。 –