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 (将#修改为@)