Tej*_*jas 1 asp.net-core-webapi
我正在从我的客户端项目调用 web api 方法并将值从响应头返回给客户端
[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());
}
}
Run Code Online (Sandbox Code Playgroud)
我在下面尝试在客户端应用程序中获取标头值
[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");
}
Run Code Online (Sandbox Code Playgroud)
但它返回 "System.String[]" 。
请告诉我从响应头中获取数据的正确方法
我找到了解决方案:
var headers = response.Headers;
string role = "";
if (headers.TryGetValues("Role", out IEnumerable<string> headerValues))
{
role = headerValues.FirstOrDefault();
}
Run Code Online (Sandbox Code Playgroud)
不要忘记添加对 System.Linq 的引用。
| 归档时间: |
|
| 查看次数: |
3351 次 |
| 最近记录: |