问题标签 [httpclienthandler]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1188 浏览

c# - 对多个端点使用 HttpClient 和 HttpClientHandler 的最佳实践是什么?

使用HttpClient并不像我希望的那样直接。尽管它是一种IDisposable类型,但将其包装在using语句中并不是最佳实践,将其设置为单例甚至是理想的。但是,当您将 a 传递HttpClientHandler给类似的构造函数时会HttpClient怎样:

我见过像上面这样的代码,其中HttpClient故意将其包装在一个using语句中,但它HttpClientHandler是一个单例。文档表明客户端处理程序已被处理,除非第二个参数指示false如上所述:

在此处输入图像描述

请参阅https://docs.microsoft.com/en-us/dotnet/api/system.net.http.httpclient?view=netframework-4.8#constructors

使用 HttpClient 的部分问题是必须与该 HttpClient 的所有实例共享超时之类的几个问题,因此,出于这个原因,创建使用可能由 HttpClientHandler 提供的相同连接池的单独的 HttpClient 实例会很好(假设这就是它的工作原理)。我担心的是我不希望 HttpClient 创建一个连接池,然后每次都将其处理掉。有多个帖子说明这对性能真的很不利。我似乎找不到任何关于有效使用 HttpClient 和 HttpClientHandlers 的好文档。

所以......我的问题基本上是:

一起使用 HttpClient 和 HttpClientHandler 时,是否最好将 HttpClientHandler 设为单例,然后using每次在块中实例化尽可能多的新 HttpClient?-- 这只有在连接池由 HttpClientHandler 管理时才有意义,我认为是这种情况。

0 投票
1 回答
347 浏览

c# - 循环中的 DelegatingHandler 和 HttpClient

我正在尝试HttpClient.GetAsync循环执行。
根据Microsoft Doc,建议使用 1 个HttpClient.

我得到的方式HttpClient

GetAsync第一次正常运行,但是当我重用httpClient引用时,出现错误:The 'DelegatingHandler' list is invalid because the property 'InnerHandler' of 'HttpClientTelemetryHandler' is not null.

当我每次都尝试在循环中创建一个新实例时Handler,它工作正常。HttpClient

现在这是一个利益冲突。我应该每次在循环中创建一个新实例,还是有任何其他方法可以做到这一点,这是正确的方法。

附加信息:我用来创建HttpClientis的自定义库.Net Standard 2.0和调用 HttpClient 的客户端应用程序 is .Net Core 2.1

感谢任何帮助。

谢谢。

0 投票
1 回答
1204 浏览

c# - 在 .NET Core 2.2 中使用 SocketsHttpHandler 并忽略证书验证

使用HttpClientHandler,我们可以设置服务器验证回调并返回 true(通过写出或使用DangerousAcceptAnyServerCertificateValidator)。在升级到 .NET Core 2.2 后切换HttpClient到使用时,如何确保绕过此验证?SocketsHttpHandler这是默认的吗?我目前找不到关于这个主题的太多信息,我将部署到一个我想避免做出重大改变的环境。

0 投票
1 回答
882 浏览

macos - 使用 HttpClient 在 Mac 上的 dotnet 核心应用程序中使用网络凭据

编写一个 dotnet 核心应用程序。我需要使用网络凭据登录,因为服务(恰好是 TFS 本地服务器)使用这些凭据进行身份验证。在我(和另一个团队成员)的 Windows 机器上,以下代码有效:

但它不适用于我的mac。我收到未经授权的 401。两者都使用相同的硬接线连接。这适用于我的mac:

所以这排除了连接性问题,我想。我错过了我需要在我的 Mac 上做的事情吗?任何人都可以指出一些文档或方法来解决这两个请求在最低级别所做的事情,看看是否有区别?

0 投票
1 回答
231 浏览

c# - 我正在尝试通过 HttpClient 在 .net standard1.3 库中应用代理身份验证

.net Standard 1.3 意味着 -> 没有 WebProxy 库。所以我创建了一个,这里是:

我像这样创建 HttpClient :

没有错误,没有例外,尽管这正是我正在寻找的。我使用 Fiddler 设置了一个代理,带有用户名和密码,为了测试代理,我有意将另一个密码传递给 httpClient。

现在,问题是 httClient 在尝试调用指定的 API 时应该抛出异常,因为代理的凭据是错误的。

我错过了什么?感觉 httpClient 甚至根本看不到代理,尽管在调试时我可以看到凭据被传递给处理程序并由 httpClient 包含。

0 投票
1 回答
1550 浏览

c# - 从 HttpClient 实例访问 HttpClientHandler?

使用 HttpClient 实例和 HttpClientHandler 实例(.Net Framework,不使用 Core)时,是否可以稍后以任何方式访问 HttpClientHandler 实例/其属性(用于只读目的)?

不幸的是,创建 HttpClientHandler 实例作为稍后引用的变量是不可能的,因为 HttpClient 实例正在作为参数传递给库,我们无法更改调用客户端。

例如,我想实现这样的目标:

0 投票
1 回答
123 浏览

c# - 从 AddHttpClient 访问 IMemoryCache 服务

我正在使用 .NET Core 3.1。

在启动时,我添加以下内容:

问题是MyConfig一个期望的类IMemoryCache

证书从内存缓存中存储和加载。请问我该如何解决?

0 投票
0 回答
493 浏览

c# - 如何将 HttpClientHandler 传递给现有的 HttpClient?

我是HttpClient httpClient从班外注射的。

在我的班级中,我正在创建一个新的 HttpClientHandlervar handler = new HttpClientHandler()并设置它的值。

我需要以与使用构造函数相同的方式链接HttpClientHandler到现有的:HttpClientnew HttpClient(handler)

可能吗?我试过在里面寻找HttpClientHandler财产,HttpClient但它不存在。还有其他方法吗?

0 投票
1 回答
150 浏览

c# - 等待 client.GetStringAsync(url) ERREUR

你好,我有一个我无法解决的问题。我无法调整我的代码以防止它在以下级别崩溃:

等待客户端.GetStringAsync (url);

哪个有一个不修改的解决方案: async void GetLieu (string place)) ?

我接受任何信息。先感谢您。

0 投票
0 回答
31 浏览

asp.net-core - HttpClientHandler 设计与测试冲突

我的集成测试在一次运行时失败,但如果单独运行则通过。

测试针对的是初始化依赖服务 2 的服务 1。服务 2 通过 DI 接收 HttpClientHandler,它设置默认行为(AllowAutoRedirect 属性)。

由于测试场景,我必须使用 HttpClientHandler 在服务 2 中创建 HttpClient。(具体而言,通过 HttpClientHandler 的调用在响应内容发生更改的集成测试中被拦截。无法通过 HttpWebRequest 和 HttpClientFactory 来执行此操作。因此 HttpClientHandler 的默认行为是在 Service 2 的构造函数中)。

为什么一次运行测试时会出现此错误?两次发生了什么?测试单独工作正常,这真是令人困惑。

我在某个地方犯了设计罪吗?