【发布时间】:2021-04-11 07:17:58
【问题描述】:
net 5.0 情人。
我是 blazor 和 .net 5.0 的新手,我使用 blazor WebAssembly 和 WebApi 开发应用程序。
有两个主要项目:客户端,服务器。
客户端是 Blazor WebAssembly,服务器是 WebApi 控制器项目。
在服务器端,在控制器中,HttpGet 方法,我向响应头添加一个值:
[HttpGet]
public async Task<ActionResult<IList<Country>>> GetAsync([FromQuery] Pagination paginationDto)
{
/...
httpContext.Response.Headers.Add("TotalPages", totalPages.ToString());
//...
IList<Country> = ...
return result;
}
在客户端项目剃须刀页面中,使用以下方法从通用类调用api:
protected virtual async Task<PaginatedResponse<O>> GetAsync<O>(Pagination pagination)
{
HttpResponseMessage response = null;
try
{
response = await httpClient.GetAsync(RequestUri);
if (response.IsSuccessStatusCode)
{
try
{
//This response Header always is null!
System.Console.WriteLine("response.Headers: " + response.Headers.ToString());
O result = await response.Content.ReadFromJsonAsync<O>();
var paginatedResponse = new PaginatedResponse<O>
{
Response = result,
TotalPages = totalPages
};
return paginatedResponse;
}
//...
return default;
}
当从邮递员调用 Api 时,结果和 Header 都很好,并且 TotalPages 在那里。 在Client App中,结果是ok的,但是Header为null。
任何信息都会救我;-)
提前致谢。
【问题讨论】:
-
将您的调试 Console.WriteLine 字符串更改为:
response.Headers["TotalPages"].ToString()我认为在列表中调用 ToString 不会给您所期望的结果 -
感谢回复,但它始终为空,如下代码 response.Headers.GetValues("TotalPages").FirstOrDefault() 生成异常,因为 Headers 为空。
-
你在浏览器网络日志中看到标题了吗?
-
为什么你返回一个
IList<Country>和一个标题中的计数而不是一个PaginatedResponse<Country>?
标签: asp.net-core blazor dotnet-httpclient webassembly response-headers