Điều này khiến tôi phát điên. Tôi đang sử dụng ASP.NET MVC. Tôi có một bộ điều khiển với một hành động HttpPost hoạt động như một URL gọi lại được gọi bởi một máy chủ khác (không thuộc quyền kiểm soát của tôi). Tôi muốn tự động đọc JSON được đăng lên nó mà không cần sử dụng WebAPI hoặc Mô hình ràng buộc. URL cũng có tham số chuỗi truy vấn được truyền cho nó.ASP.NET MVC Đọc dữ liệu JSON thô nguyên
URL gọi lại trông giống như sau:
http://domain.com/callback?secret=1234
Tôi đã thử đọc đầu vào được thông báo bằng:
[HttpPost]
public ActionResult Callback(String secret)
{
String jsonData = new StreamReader(this.Request.InputStream).ReadToEnd();
// ...
}
Tuy nhiên "jsonData" luôn luôn là null hoặc rỗng.
Tôi chỉ muốn nhận dữ liệu đã đăng và nhập vào JsonFx để tôi có thể truy cập động nội dung. Bất kỳ ý tưởng về cách làm điều này một cách dễ dàng nhất có thể?
CẬP NHẬT
Tôi đã khám phá ra sau ...
Trong khi ở trên không làm việc (jsonData sẽ được null hoặc trống), sau đây KHÔNG nếu tôi cấu hình những tùy chọn ít Tôi có trên máy chủ gọi để bỏ qua tham số chuỗi truy vấn "bí mật", đó là tất cả những gì tôi có thể thực hiện ở phần cuối vì đó không phải là máy chủ của tôi. Trong trường hợp này, jsonData sẽ có đúng posted JSON chuỗi:
[HttpPost]
public ActionResult Callback(/* String secret */)
{
String jsonData = new StreamReader(this.Request.InputStream).ReadToEnd();
// ...
}
này là rất bực bội để làm việc xung quanh và tôi không biết một cách dễ dàng để chấp nhận cả một chuỗi truy vấn và gửi dữ liệu JSON trên MVC chuẩn điều khiển.
Tôi có "bộ điều khiển gọi lại" với các phương thức Hành động chấp nhận nhiều dữ liệu khác nhau (thông qua GET, qua biểu mẫu POST, qua JSON POST, qua JSON POST w/Chuỗi truy vấn, v.v.) từ các máy chủ của bên thứ ba khác nhau. Đây là những callback kiểu người bán mà tôi không kiểm soát được các định dạng hoặc phương thức được sử dụng để truyền tải thông tin. Tôi chỉ cần chấp nhận các cuộc gọi lại và xử lý thông tin cần có.
Tất cả đều hoạt động tốt trong Bộ điều khiển của tôi, ngoại trừ trường hợp "JSON POST w/Chuỗi truy vấn".
Điều này xuất hiện (ít nhất là với tôi) là thiếu sót trong bộ điều khiển ASP.NET MVC tiêu chuẩn. ???
Có ai có thể đề xuất giải pháp cho điều này có thể được sử dụng trong bộ điều khiển ASP.NET MVC tiêu chuẩn không?
khi bạn đăng, có tất cả json bằng 'jsonData'. ví dụ. '[{jsonData: [{... all json stuff ...}]}];' Tôi chưa thử nghiệm điều này, nhưng nó có thể hoạt động – jzm
Tôi không có quyền kiểm soát máy chủ đăng thông tin. Tôi đã thêm bản cập nhật ở trên. – lantram
tại sao bạn chọn tên 'jsonData' ?, dữ liệu json có thể đến trên một tên khác, hãy thử kiểm tra FormCollection cho tên. – tkt986