我有一個帶有 POST 請求/查詢的最小 API,期望原始 json 在 mongodb 中搜索
app.MapPost("/query", async (HttpContext context) => await FreeQuery(context));
FreeQuery 是異步的。沒有異步導致 internalserver 錯誤它回傳一個 IEnumerable<PreOrder。
async Task<IEnumerable<PreOrder>> FreeQuery(HttpContext context)
{
using (StreamReader reader = new StreamReader(context.Request.Body, Encoding.UTF8))
{
string query = await reader.ReadToEndAsync();
var filter = BsonDocument.Parse(query);
var result = _collection.Find(filter);
var list = EnumFromBson<PreOrder>(result);
Console.WriteLine(list.Count());
return list;
}
}
list.Count()回傳 34 但在客戶端上讀取結果時它是一個空字串!回應的內容長度也為零。
如何在客戶端獲得有效的串列?
它確實在 GET 請求(非異步)中作業
IEnumerable<PreOrder> FindByField(string field, string value)
{
var filter = Builders<BsonDocument>.Filter.Eq(field, value);
var result = _collection.Find(filter);
var list = EnumFromBson<PreOrder>(result);
return list;
}
uj5u.com熱心網友回復:
將虛擬引數添加到處理程式:
app.MapPost("/query",
async (HttpContext context, ILogger<Program> _) => await FreeQuery(context));
當通過方法組呼叫使用時,具有一個引數的異步處理程式存在一個非常相似的錯誤(應在 .NET 7 中修復) 。我稍后會檢查上一個問題的修復是否也修復了這個問題。MapHttpContext
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/525986.html
