如何解决MVC控制器动作中的HttpClient
我对HttpClient
有疑问。我有一个ASP.NET MVC 6项目。我需要调用一些REST API来获取或发布一些数据。
然后我有下一个逻辑。用户调用服务器方法ip / index >>服务器获取请求并调用api ip / api / GetSomething >>服务器获取响应并为用户返回View。
示例代码:
[HttpGet]
public async Task<IActionResult> Index()
{
try
{
using (var h = new HttpClient())
{
h.DefaultRequestHeaders.Add("Authorization","Bearer " + token); //token i got early
h.DefaultRequestHeaders.Add("Keep-Alive","true");
h.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
string sQueryKadastr = _uRL + $"/api/GetSomething";
contentSave.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
var response = await h.GetAsync(sQueryKadastr);
//did something with response and return View
}
catch (Exception ex)
{
g_Global.Log.Write4Web(User.GetUserName(),$"Errors: ",ex);
}
return View("Error");
}
我的方法运行良好(任何发布,获取,放置等),但是我知道使用HttpClient处置后,套接字仍然有效。将来我会得到SocketException。
如何避免这种情况?我不能使用一个HttpClient
,因为来自不同用户的请求可以同时发送到服务器,并且它们可能会发生冲突。我的意思是服务器可以在索引操作[HttpGet]
和索引操作[HttpPost]
中获得请求,并且这两种方法都会同时将自己的标头设置为HttpClient
和URI。
或者我做错了什么?我将不胜感激。
安全线程的解决方案: Is setting the Authorization header in HttpClient safe?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。