gpt4 book ai didi

c# - 应用程序生命周期的单个 HttpClient - 这个 HttpClient 的单个实例如何确保它响应了正确的请求?

转载 作者:行者123 更新时间:2023-12-02 08:37:39 27 4
gpt4 key购买 nike

我在 Application_Start 事件中创建了 HttpClient 的单个实例,以便在 Global.asax.cs 中的应用程序中重用

应用程序启动中的代码:

    protected new void Application_Start()
{
HttpClientHandler httpClientHandler = new HttpClientHandler();
string _accessTokenUrl = ConfigurationManager.AppSettings["KongAccessTokenURl"];
string _adminUrl = ConfigurationManager.AppSettings["KongAdminUrl"];
base.Application_Start();
ApplicationWrapper.KongAdminClient = new HttpClient(httpClientHandler)
{
BaseAddress = new Uri(_adminUrl)
};
}

这里ApplicationWrapper.KongAdminClient是一个静态属性

我开发了一个登录 API,在该 API 中,我调用 Kong 网关 api 来生成 token ,以便我可以使用该 token 为该特定用户创建响应。

出于上述目的,我为每个请求创建一个新的 HttpRequestMessage,但 HttpClient 与 Microsoft 所说的保持不变..

HttpClient is intended to be instantiated once and re-used throughout the life of an application. Instantiating an HttpClient class for every request will exhaust the number of sockets available under heavy loads https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpclient?view=netframework-4.8#remarks

我的问题是,在同样的实例下,HttpClient 如何知道要响应哪个线程?在负载条件下,同一实例是否会正确响应正确的请求线程?

最佳答案

这样想吧。当您使用 Math.Round 函数时,您实际上只是调用一个根据特定输入执行某些操作(在本例中为舍入)的函数。

它可能会重用一些常量和其他值,但它们的更改不会影响其他调用。

因此,当您使用像 GetAsync 这样的代码时,您只是调用一个获取一些输入并返回一个值的方法。

关于c# - 应用程序生命周期的单个 HttpClient - 这个 HttpClient 的单个实例如何确保它响应了正确的请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59486792/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com