首页 > 解决方案 > 如何从 HttpResponseData 对象获取状态代码和标头数据?

问题描述

我目前有一个带有 ASP.NET Core Web API 的 Blazor 客户端 (Wasm)。(都部署到 Azure)

ASP.NET Core Web API 返回一个 IActionResult,它在我的 BlazorClient 中转换为一个 HttpResponseMessage。

我想用触发的 Azure 函数 HTTP 替换我的 ASP.NET Core Web API。

Azure 函数是 .Net 5。(我必须这样做,因为我在解决方案中的所有其他项目都是 .Net 5)。

由于该函数是用 .Net 5 编写的,因此会返回一个 HttpResponseData 对象。

在我的 HttpResponseData 对象中,我有我想在我的客户端中测试的状态代码、我需要访问的标题数据(总计数),以及包含我的数据列表的正文。

当我从 Blazor 客户端调用 Azure 函数时,我无法访问标头数据。

当我使用 _httpClient.GetAsync 方法时,我在获取 Body 数据时也遇到了问题。

我能做的最好的事情就是使用 _httpClient.GetStringAsync 方法。这让我从身体中获取数据。

但是,我也想要状态代码和标题数据。

请参阅下面的代码。

        public async Task<string> GetVpbDelegatesAsync2(int? pageNo, int? pageSize, string searchText)
        {
            var requestUri = $"{RequestUri.VpbDelegates}?pageNo={pageNo}&pageSize={pageSize}&searchText={searchText}";

            var response = await _httpClient.GetAsync(requestUri);

            //This line throws an exception. If I comment it out. I get my Body data
            var total = response.Headers.GetValues("X-TotalCount").First();

            return await _httpClient.GetStringAsync(requestUri);
        }

所以我的问题是:

谢谢你的帮助。

编辑:只为那些在家跟踪的人:我能够获得状态代码,但我仍然无法获得标题数据。我在 PostMan 中进行了相同的调用,并且 Header 数据在那里。

编辑 2:我想出了如何从正文/内容中获取我的数据。但仍然没有得到 Header 数据。

标签: c#azure-functions

解决方案


HttpResponseData对象仅在功能代码的上下文中。你的HttpClient对象仍然会HttpResponseMessage像@Greg 提到的那样返回。


推荐阅读