在c# web应用程序中使用HttpClient。

问题描述 投票:0回答:1

MS文档中说:"HttpClient的目的是被实例化一次,并在应用程序的整个生命周期中重复使用"--这似乎很公平,但当你在一个web应用程序中使用HttpClient时,就不是那么简单了。所有使用HttpClient的例子都是在控制台应用中完成的,事实上我找不到任何一个web应用使用HttpClient消耗API的例子。所以我的问题是,HttpClient是否真的要从一个web应用程序中使用,或者我应该使用WebRequest或其他东西?谢谢大家的回复!

补充24小时后......它是一个.net框架的应用。对不起,我只是刚刚赶上的答案,我从来没有使用这个网站之前,我以为我会收到一封电子邮件,当答案发布 - 真诚感谢所有的意见,看起来像我有一些阅读做。

c# dotnet-httpclient
1个回答
0
投票

如果你使用的是dotnet core,那么就使用HttpClientFactory,如果不是的话,就为你的HttpClient使用一个私有的静态域。这些都是推荐的最佳实践。第二种选择仍然会带来一些问题,但它们是更多的边缘情况,不会最终耗尽你的socket。这篇文章很好地解释了这些问题 https:/aspnetmonsters.com2016082016-08-27-httpclientwrong。


1
投票

首选的方式是 使用HttpClientFactory

然后,您可以简单地在您的Services中注入HttpClient,让DI容器担心寿命问题。


0
投票

控制台应用程序经常被用于教程项目,因为它们更容易创建和运行,而没有涉及服务托管的附加复杂性。 使用一个控制台项目来说明以下功能更容易 HttpClient 比从Web应用程序内部。另外,值得一提的是,所有.NET Core应用程序都是控制台应用程序。

在生产环境中,web应用程序被托管在web服务器、容器、windows服务或无服务器环境中,因此管理web应用程序的生命周期是非常重要的。HttpClient 是很重要的,遵循微软的建议在这里是有意义的。 您肯定会使用IoC容器来管理应用程序中的对象图。您可以配置IoC,使IoC的生命周期与您的应用程序的生命周期一致。HttpClient 是一个单体或每个HTTP请求的实例化。

© www.soinside.com 2019 - 2024. All rights reserved.