Tôi đang chạy một ứng dụng ASP.Net trên Windows Server 2008 R2. Tôi đã cài đặt .NET Framework 4.5. Khi di chuyển từ .NET Framework v2.0 sang v4.0, tôi bắt đầu trải nghiệm hành vi ngẫu nhiên từ WCF.JSON không hợp lệ được trả lại ngẫu nhiên bởi WCF
Dịch vụ web của tôi trả về JSON. Khi khởi động lại IIS, dịch vụ sẽ trả về JSON hoàn toàn hợp lệ khoảng 3 đến 5 lần. Sau đó, JSON trở nên không hợp lệ. Tôi đã kiểm tra những gì đang đi qua dây thông qua Fiddler và cũng là bản ghi của riêng tôi trên cả ứng dụng khách (một ứng dụng Adobe AIR gọi dịch vụ) và trên chính máy chủ.
Fiddler cho thấy rằng phản hồi thô thực tế chứa JSON không hợp lệ. Nó xuất hiện rất nhiều rằng một số điểm ngẫu nhiên trong JSON phản ứng JSON bắt đầu được viết ra một lần nữa !, ghi đè lên những gì cần có và tạo ra JSON bị xáo trộn trong tiến trình.
Xem ví dụ nối này:
{"responseCode":0,"actionCode":"OK","cdn{"responseCode":0, "actionCode".....
Lưu ý như thế nào "responseCode" (mà chỉ nên xuất hiện ở phần đầu của phản ứng JSON) đột nhiên xuất hiện một lần nữa trong JSON thêm vào. "cdn{"responseCode":0
là khóa học không hợp lệ JSON.
Tôi đã thử nhiều bản vá. Tôi đã thử chạy ServiceModelReg.exe
và aspnet_regiis.exe
từ dưới các khuôn khổ khác nhau và trong các kết hợp khác nhau. Hành vi tương tự. Nếu tôi trở lại mã trước theo v2.0 và chuyển App Pool trở lại v2.0 thì mọi thứ hoạt động tốt.
Tôi tin rằng đây là lỗi sâu trong WCF. Bất kỳ ý tưởng?
Truy vấn duy nhất tôi có vào thời điểm này là tách ra WCF và chuyển sang một cái gì đó như ServiceStack nơi tôi có thể gỡ lỗi vào tất cả các mã nếu cần thiết.
Hình như một số loại vấn đề đệm, nơi một bộ đệm được truyền lại, hoặc trong trường hợp một bộ đệm không được xóa sau khi truyền/nhận. –
Tôi không biết bất kỳ vấn đề hiện tại nào về vấn đề này. Nhưng sẽ rất hữu ích nếu bạn có thể đăng một đoạn mã repro. – Praburaj
Bạn đã thử FailedRequestLogging để xem liệu có bất kỳ điều gì đáng chú ý trong quá trình này không? Bạn đã thử chạy các đối tượng trả về của mình thông qua JavaScriptSerializer() để xem có trục trặc trong đó không? Bạn có thể gỡ lỗi vào khung nếu bạn cần (xem: http://msdn.microsoft.com/en-us/library/cc667410.aspx). – Pete