c# - 静态类中的 HttpClient 初始化
问题描述
我正在学习 C#。在这样的静态类中初始化 HttpClient 是否正确?
public static class Network {
static string token = "";
static string baseAddress = "";
static readonly HttpClient httpClient = new HttpClient();
static Network() {
httpClient.BaseAddress = new Uri(Network.baseAddress);
httpClient.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", Network.token);
}
}
也可以在一行中进行初始化,例如
static readonly HttpClient httpClient = new HttpClient() {
BaseAddress = new Uri(Network.baseAddress),
DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", Network.token) //this does not work
};
解决方案
是的,您可以通过这样做来实现:
static readonly HttpClient httpClient = new HttpClient
{
BaseAddress = new Uri(Network.baseAddress),
DefaultRequestHeaders =
{
Authorization =
new AuthenticationHeaderValue("Bearer", Network.token)
}
};
将 HttpClient 视为单例,这通常不是最佳实践(不是对连接寿命的最佳控制),但这完全取决于您将如何使用它。HttpClient
如果您的应用程序不经常使用它,那么永远保留在内存中是不明智的。最佳做法是使用命名或键入HttpClient
或使用IHttpClientFactory
. 您可以在此处找到非常详细的信息
推荐阅读
- python - 如何在 Python 中使用 Selenium 设置动态显式等待?
- c# - 您可以从基本 Win32 控制台模板应用程序(不是 WinForm/abstractions/wrappers 或使用 C++/Winrt 模板)内的 C#/Winrt 组件调用吗?)
- accessibility - 如何向 pa11y ax runner 添加自定义规则?
- asp.net-mvc - 如何在 .Net 框架中长时间读取和写入 Azure 中的控制台?
- java - UDP 数据报已发送但从未收到
- glib - 如何使用 Vala 建立 TLS 连接?
- node.js - 运行 Docker 容器时无法显示我的 React UI
- asp.net-mvc - Blazor,MVC。确认电子邮件。为什么 url 这么长(500 个字符)
- angular - 带角度应用的钥匙斗篷
- python - 硒python加载更多按钮不起作用