问题标签 [httpclientfactory]

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 回答
112 浏览

c# - 如何通过 AddHTTPClient 在 SQLCLR 中添加命名的 HTTPClient?

我正在遵循此处找到的 Microsoft 指南,了解如何使用 SQLCLR 将命名 HTTPClient 添加到我的 SQL Server。一旦添加了 HTTPClient,这一切似乎都很简单,我什至已经添加了代码,但我无法弄清楚这段代码应该去哪里:

显然,这段代码应该以某种方式结束在Startup class. 它是如何结束的,我不明白。我什至找不到这门课。

我尝试将此代码添加到 C# 脚本中,但它当然抱怨它不知道是什么services。我什至不知道它是什么,所以我也不希望 SQL Server 知道......

有人可以指出我正确的方向吗?我完全被困在这一点上。

编辑

所以我很挣扎,因为我误解了 SQL Server 应该连接数据库和外部源的方式。他们之间需要有一个网络应用程序。Web 应用程序处理 HTTPClient,而不是数据库....

0 投票
1 回答
1719 浏览

c# - 在启动期间在 ASP Net Core 3.0 中配置 httpClients 的最佳做法是什么?

ASP NET Core 2.1 为我们提供了 HttpClientFactory,这是构建自定义 httpClients 的好方法。

我们将此方法与注入到 startup.cs 类的构造函数中的端点配置服务一起使用。

代码看起来有点像:

IEndpointService 是在 Startup 被注入以下调用之前配置的。

这允许我们从外部数据源读取信息并配置多个具有不同配置的命名 httpClients。

此功能已在 ASP NET Core 3.0 中删除。

请参阅:https ://weblogs.thinktecture.com/pawel/2017/08/aspnet-core-beware-singleton-may-not-be-singleton.html和https://andrewlock.net/avoiding-startup-service-注入-asp-net-core-3/

这给我们留下了一个问题,如何最好地在 3.0 中实现相同的功能。

这是迄今为止我想出的最好的,但我很想知道关于这个问题的指导是什么。

在此示例中,我使用 serviceProvider.GetService 强制创建 EndpointService。

我意识到我可能已经重新创建了多个单例错误(请参阅上面的链接),但我不确定这里的最佳方法。

想法?

0 投票
1 回答
453 浏览

c# - 模拟 IHttpClientFactory - xUnit C#

我试图在我的项目中构建一个通用的 HTTP 服务(带有 .net core 2.1 的 c#),我已经按照下面的代码片段完成了它HttpService

我还通过从我的业务逻辑类调用它开始使用它,该类使用此通用PostAsync方法将 HTTP 调用发布到正文中包含内容的第 3 方。它完美地工作。

但是,当我尝试测试它时,我失败了!实际上,当我尝试调试(测试模式)时,当调试器在业务类中null到达这一行时,即使使用假对象和模拟,我也会得到响应,尽管它在调试模式下正常工作而无需测试/模拟。var result = await _httpService.PostAsync("https://test.com/api", content);Processor

HTTP服务:

商务课程:

测试类:

0 投票
0 回答
484 浏览

c# - 正确使用 IHttpMessageHandlerFactory?

我有一个用例HttpMessageHandler需要实例化的新选项。我相信这IHttpMessageHandlerFactory.CreateHandler是正确的 API,但我不确定这种用法是否正确:

假设MyDelegatingHandler没有需要自己处理的状态,这会正确使用通过依赖HttpClientFactory注入的生命周期管理功能吗?IHttpMessageHandlerFactory

0 投票
1 回答
590 浏览

asp.net-core - 在 F# 中使用“IHttpClientFactory”的常规方法是什么?

因此,在 C# .NET Core 应用程序中,我可以使用所有花哨的 DI 内容进行缓存HttpClient,以避免套接字耗尽、优化与服务器的连接等:

现在在 F#... 我只是在控制台应用程序中有一个简单的函数,它检查 url 的有效性并针对不同的 url 循环:

我知道我可以将接口和状态以及所有 OOP 带到这里,但大师们不鼓励这样的想法,所以我只是想知道是否有一些完全不同的超级功能方法。

0 投票
1 回答
756 浏览

c# - HttpClientFactory(System.Net.Http.Formatting)的目的是什么?

网上有很多关于HttpClient,,,IHttpClientFactoryDI,socket耗尽问题等的讨论。

有人可以向我解释为什么需要HttpClientFactory class(来自System.Net.Http.Formatting程序集)及其方法。

0 投票
2 回答
4004 浏览

c# - 由 HttpClientFactory 创建的长寿 HttpClient

我读过HttpMessageHandlers每 2 分钟回收一次,但我不确定是否将新的分配给现有的HttpClient

我已经通过使用进行了测试SetHandlerLifetime(TimeSpan.FromSeconds(5));,即使在 2 分钟后有无数请求,httpClient 仍在继续工作,这是一个好兆头?

这是否意味着我不必担心 DNS 更改/套接字耗尽?

ConfigureServices方法内部:

编辑:添加了一些示例代码。

0 投票
1 回答
1537 浏览

c# - 如何在 .net core 3.1 中的依赖注入设置之外向 IHttpClientFactory httpclient 添加证书?

我有这种情况:我有一个 Azure 函数,它从不同的服务调用一些 REST api。此其他服务需要证书。

如果我在 Startup.cs 中的依赖项注入期间尝试添加证书,则找不到证书。似乎 Startup.Configure 在加载所有证书之前运行(?)。

因此,我需要能够在 azure 函数本身内将证书加载到 httpclient。但是,除了某些标头之外,IHttpClientFactory 似乎没有任何机制来更改由 CreateClient 创建的客户端。如何稍后在调用堆栈中添加证书(将通过 HttpClientHandler.ClientCertificates.Add() 完成)?

在本地调试中启动我的天蓝色函数时,它立即在 GetCertificate 中失败。我成功地从我的密钥库中获取了证书指纹,但它在我的 CertStore.My 中找到的证书集不完整(它返回 4 个证书,其中没有一个在我的个人存储中?!?)。这就是让我相信 Startup.Configure 在 azure 函数加载证书之前发生的原因。

在尝试使用 Microsoft.Extensions.Http + DI + Polly 的推荐方法之前,我在 MyAPI.DoSomething 函数本身的函数中如下所示:

这工作得很好。

所以,我在想的是,由于在调用 Startup.cs 时证书显然不可用,所以我需要能够在初始化 HttpClient 的位置添加证书

或者,如果不是在 Startup.Configure 之后没有加载证书,为什么我的本地商店中的所有证书都没有被提取,我该如何让它正常工作?

0 投票
1 回答
2652 浏览

c# - Refit Net core AddRefitClient 读取响应头

对于使用 Refit 处理 REST API 的 WPF .net core 3.1 应用程序,我需要以下代码的帮助。我正在尝试从响应标头中获取 AuthToken 的值。但我找不到拥有 AuthorizationHeaderValueGetter 值的属性。

我确实看到了一些与此问题相关的错误 - https://github.com/reactiveui/refit/issues/689。据称已在 .net core 3.1 版本中修复。但我还没有能够检索到响应头。

应用程序.xaml.cs

IService.cs 接口 IService 已定义如下:

我在我的 ViewModel (WPF) 中注入 IService 并尝试获取应该设置的“AuthToken”标头的值。

视图模型

0 投票
0 回答
111 浏览

c# - 我如何对使用 Nunit 调用 IHttpClientFactory 的存储库进行单元测试

我想测试一个使用 IHttpClientFactory 接口的存储库。我想测试的存储库使用 httpclient 对 Web 服务进行外部 api 调用。Web 服务返回 json 数据,然后返回反序列化的 json 数据。这是流程遵循我的存储库类中的所有方法。我已经阅读了很多关于这件事的文章,但没有一篇有帮助,也许是因为我是初学者。任何帮助都将受到高度赞赏。这是存储库代码

``