我正在使用 MessagePack 反序列化我通过 API 检索的 FooViewModel 列表
private async Task FooPageChangeHandler(int newPage)
{
AllData = await Http.GetFromMessagePackAsync<List<FooViewModel>>($"api/FooView/GetAll/{CurrentPage}/{PageSize}");
}
导航到页面后,我在控制台中收到以下错误:
blazor.webassembly.js:1 暴击:Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer[100] 未处理的异常呈现组件:没有 MediaTypeFormatter 可用于从媒体类型为“text/plain”的内容中读取类型为“List`1”的对象。
当我查看响应标头时,“内容类型”显示如下:
内容类型:文本/纯文本;字符集=utf-8
如何将内容类型更改为“application/x-msgpack”?
我试过像这样手动添加标题:
public static async Task<T> GetFromMessagePackAsync<T>(this HttpClient client, Uri requestUri)
{
if (client == null)
throw new ArgumentNullException(nameof(client));
using (var request = new HttpRequestMessage(HttpMethod.Get, requestUri))
{
request.Headers.Add("Accept", "application/x-msgpack");
request.Headers.TryAddWithoutValidation("Content-Type", "application/x-msgpack");
var response = await client.SendAsync(request).ConfigureAwait(false);
return await response.Content.ReadAsMessagePackAsync<T>().ConfigureAwait(false);
}
}