微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MVC控制器动作中的HttpClient

如何解决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 举报,一经查实,本站将立刻删除。