问题描述
我对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 (将#修改为@)