Tôi muốn trả lại dữ liệu JSON về máy khách, trong phương thức dịch vụ web của tôi. Một cách là tạo ra SoapExtension
và sử dụng nó làm thuộc tính trên phương pháp web của tôi, v.v. Một cách khác là chỉ cần thêm thuộc tính [ScriptService]
vào dịch vụ web và để cho khuôn khổ .NET trả lại kết quả dưới dạng {"d": "something"}
JSON, quay lại người dùng (d
tại đây là điều gì đó ngoài tầm kiểm soát của tôi). Tuy nhiên, tôi muốn quay trở lại một cái gì đó như:Response.Write() trong WebService
{"message": "action was successful!"}
Phương pháp đơn giản nhất có thể viết một phương pháp web như:
[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!\"}}");
}
}
Bằng cách này, những gì tôi sẽ nhận được ở khách hàng là:
{ "message": "action was successful!"} { "d": null}
Điều đó có nghĩa là ASP.NET đang thêm kết quả thành công vào kết quả JSON của tôi. Nếu mặt khác tôi tuôn ra những câu trả lời sau bằng văn bản thông báo thành công, (như response.Flush();
), ngoại trừ xảy ra mà nói:
Server có thể không tiêu đề rõ ràng sau khi tiêu đề HTTP đã được gửi đi.
Vì vậy, phải làm gì để nhận kết quả JSON của tôi mà không thay đổi cách tiếp cận?
Hãy thử thiết lập response.BufferOutput = true; –