Tôi đang cố gắng trích xuất một số dữ liệu trong yêu cầu trong Web Api Asp.Net mới. Tôi có một thiết lập xử lý như thế này:Không thể đọc dữ liệu nội dung từ trang web api POST
public class MyTestHandler : DelegatingHandler
{
protected override System.Threading.Tasks.Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
{
if (request.Content.IsFormData())
{
request.Content.ReadAsStreamAsync().ContinueWith(x => {
var result = "";
using (var sr = new StreamReader(x.Result))
{
result = sr.ReadToEnd();
}
Console.Write(result);
});
}
return base.SendAsync(request, cancellationToken);
}
}
Đây là yêu cầu http tôi:
POST http://127.0.0.1/test HTTP/1.1
Connection: Keep-Alive
Content-Length: 29
Content-Type: application/x-www-form-urlencoded
Expect: 100-continue
Host: 127.0.0.1
my_property=my_value
vấn đề là không có vấn đề làm thế nào tôi cố gắng đọc các thông tin từ request.Content
nó luôn luôn có sản phẩm nào. Tôi đã thử
request.Content.ReadAsStreamAsync
request.Content.ReadAsFormDataAsync
request.Content.ReadAs<FormDataCollection>
cũng như
[HttpGet,HttpPost]
public string Index([FromBody]string my_property)
{
//my_property == null
return "Test";
}
None nếu nó hoạt động. Tôi không thể lấy dữ liệu ra khỏi cơ thể. Tôi đang lưu trữ bên trong IIS trên Windows 7 và sử dụng Fiddler để gửi yêu cầu. Tôi đang làm gì sai?
Sẽ rất hữu ích nếu bạn biết một khách hàng độc lập giống như wcftestclient.exe tạo ra kết quả tương tự. –
Đã cố gắng để chạy điều đó nhưng nó sẽ không bởi vì nó nói rằng điểm cuối của tôi không có bất kỳ siêu dữ liệu nào. – Micah
Điều đó có vẻ kỳ lạ. Có một số lý do bạn chọn phương thức truyền dữ liệu này qua phương pháp [HttpGet] và [HttpPost] được cung cấp không? –