我有一個 BlazorWASM 客戶端,它使用 .Net5/6 中的 HttpClient 請求來自我的 API 的回應。
填充物件“DataManifest”,然后通過 OK() 方法通過 IActionResult 提交:
[HttpGet]
[Route("/Data/GetManifest")]
public async Task<IActionResult> GetManifest()
{
try
{
DataManifest manifest = new();
manifest.LastJob = await _db.jobs.MaxAsync(x=>x.id);
manifest.LastJobCost = await _db.jobcosts.MaxAsync(x => x.id);
manifest.LastEvent = await _db.events.MaxAsync(x => x.task_id);
manifest.LastPurchaseInvoice = await _db.purchaseinvoices.MaxAsync(x => x.id);
manifest.LastTimeRecord = await _db.TimeRecords.MaxAsync(x => x.id);
return Ok(new ApiResponse<DataManifest> { IsSuccess = true, Message = "", Value = manifest, msTiming = (int)watch.ElapsedMilliseconds });
檢查 VS 中的物件表明它是完整的,包含資料,“清單”的屬性設定正確。
但是,查看 http 回應中包含的內容(狀態:200),Edge 中的 DevTools 中的 value/'manifest' 物件為 null(其他欄位按預期填充):
{value: {}, message: "", isSuccess: true, msTiming: 17}
我還有其他 HttpGet 作業得很好(確實有像 ApiResponse<List> 這樣的物件)。我不明白為什么我的 DataManifest 物件會導致問題!
--- 更多資訊:ApiResponse 是:
public class ApiResponse
{
public string Message { get; set; } = default!;
public bool IsSuccess { get; set; }
public int msTiming { get; set; }
}
public class ApiResponse<T> : ApiResponse
{
public T Value { get; set; } = default!;
}
顯現:
public class DataManifest
{
public int lastJob;
public int LastEvent;
public int LastJobCost;
public int LastPurchaseInvoice;
public int LastTimeRecord;
}
uj5u.com熱心網友回復:
正如通過評論解決的那樣,這里的問題是DataManifest宣告只有欄位。
默認情況下,System.Text.Json忽略欄位。您可以通過選項或通過欄位上的屬性手動配置它以包含它們,但也可以將欄位轉換為屬性以使其作業。
基本上,改變這個:
public class DataManifest
{
public int lastJob;
public int LastEvent;
public int LastJobCost;
public int LastPurchaseInvoice;
public int LastTimeRecord;
}
對此:
public class DataManifest
{
public int lastJob { get; set; }
public int LastEvent { get; set; }
public int LastJobCost { get; set; }
public int LastPurchaseInvoice { get; set; }
public int LastTimeRecord { get; set; }
}
uj5u.com熱心網友回復:
你能檢查一下你JsonIgnore在Value欄位定義上沒有屬性嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/402369.html
標籤:
上一篇:使用EntityFramework與ADO.NET進行多表連接是否合適?
下一篇:如何處理“InvalidOperationExceptionSequencecontainsnoelements”
