[英]Blazor handle the error in the response from Web Api
有兩個應用程序:
WebApi動作
public async Task<object> GetAllAsync(...)
{
...
// Какая то проверка
throw new Exception("Что то пошло не так");
...
}
客戶端應用程序中的方法的示例視圖(Blazor服務器端)
public async Task GetAllAsync()
{
var httpClient = clientFactory.CreateClient();
var responseMessage = await httpClient.GetAsync($"{address}/api/foo");
if (responseMessage.IsSuccessStatusCode)
{
// successfully
}
else
{
// How to get the error message here?
}
}
}
問題是:如何正確處理API中的此類錯誤?
ps
var exception = await responseMessage.Content.ReadAsAsync<HttpError>();
HttpError與.NetFramework 4.6產生依賴關系(但最初我使用.net core 3預覽)
HttpContent類未定義ReadAsAsync方法。 我認為這是一種擴展方法,已經過時,不再支持。 您可以使用ReadAsStringAsync(),ReadAsStreamAsync()等。
示例如何將異常內容序列化為字符串:
var exception = await responseMessage.Content.ReadAsStringAsync();
以下代碼段演示了如何使用HttpContent.ReadAsByteArrayAsync()作為異步操作將HTTP內容序列化為字節數組,然后將其解析為您可以定義的類型,以保存http錯誤(類似於HttpError對象) ,您不應該使用它,但是更簡單)。
var responseBytes = await responseMessage.Content.ReadAsByteArrayAsync();
注意:根據設計,將類型說明符T更改為自定義類型,或使用內置類型(例如字符串)...
JsonSerializer.Parse<T>(responseBytes, new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase });
希望這可以幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.