如何在调用 api Blazor WebAssembly 时更改响应标头?

问题描述 投票:0回答:0

我正在使用 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);
        }
    }
blazor blazor-webassembly msgpack
© www.soinside.com 2019 - 2024. All rights reserved.