c# - 如何从 .NET Core 中的 Web API 响应读取 header 数据?

标签 c# asp.net-core asp.net-core-webapi

我正在从我的客户端项目调用 Web API 方法并将响应 header 中的值返回给客户端:

[HttpPost]
[AllowAnonymous]
[Route("login")]
public IActionResult Login(Users user)
{
    string s = _repository.Users.ValidateUser(user);
    if (s == "success")
    {
        Users u = _repository.Users.FindByUserName(user.UserName);
        int pid = u.PersonId;
        string role = "";
        if (u != null)
        {

            role = _repository.RoleManager.GetRole(u.Id);
        }
        Response.Headers.Add("Role", role);
        return Ok(pid.ToString());
    }

}

我尝试了下面的代码在客户端应用程序中获取 header 值:

[HttpPost]
public IActionResult Login(Users user)
{    
    string pid = "";
    HttpClient client = service.GetService();
    HttpResponseMessage response = client.PostAsJsonAsync("api/mymethod", user).Result;
    Task<string> tokenResult = response.Content.ReadAsAsync<string>();
    pid = tokenResult.Result.ToString();
       
    var headers = response.Headers;
    string role = "";
    if (headers.TryGetValues("Role", out IEnumerable<string> headerValues))
        {
            role = headerValues.ToString();
        }

    return RedirectToAction("Profile");
}

但它返回 System.String[]

请告诉我从响应头中获取数据的正确方法。

最佳答案

我找到了解决方案:

var headers = response.Headers;
string role = "";
if (headers.TryGetValues("Role", out IEnumerable<string> headerValues))
{
    role = headerValues.FirstOrDefault();
}

不要忘记添加对 System.Linq 的引用。

关于c# - 如何从 .NET Core 中的 Web API 响应读取 header 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53679253/

相关文章:

c# - 使用 Crystal Reports for .net 时出错

c# - 如何使用SSIS包将大型数据集拆分为多个Excel电子表格?

c# - ASP.NET MVC 4 : error when making Ajax call to controller to update SQL Server database

c# - ASP.NET 多层应用程序迁移到 ASP.NET Core

c# - 控制台与 WebAPI 中共享类库的 MediatR 设置

c# - Cortana 是否支持 webhooks/调用外部 API?

c# - asp.net core 如何获取查询字符串参数值?

asp.net-core - 在 Azure DevOps 管道中设置连接字符串

c# - 独立项目中的 ASP.NET 5 Web 项目和 Entity Framework

c# - 如何在 asp.net core 的字段中添加 swagger 示例?