Desidero restituire i dati JSON al client, nel mio metodo di servizio web. Un modo è creare SoapExtension
e usarlo come attributo sul mio metodo web, ecc. Un altro modo è semplicemente aggiungere l'attributo al servizio web e lasciare che .NET framework restituisca il risultato come {"d": "something"}
JSON all'utente (d
qui essere qualcosa fuori dal mio controllo). Tuttavia, voglio tornare qualcosa di simile:Response.Write() in WebService
{"message": "action was successful!"}
L'approccio più semplice potrebbe essere scrivendo un metodo web come:
[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!\"}}");
}
}
In questo modo, quello che vado a prendere al cliente è:
{ "message": "action was successful!"} { "d": null}
Ciò significa che ASP.NET aggiunge il risultato di successo al mio risultato JSON. Se d'altra parte Arrossisco la risposta dopo aver scritto il messaggio di successo, (come response.Flush();
), l'eccezione accade che dice:
Server può non chiare intestazioni dopo intestazioni HTTP sono stati inviati.
Quindi, cosa fare per ottenere il mio risultato JSON, senza modificare l'approccio?
Prova a impostare response.BufferOutput = true; –