首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我可以在不是HttpClientFactory核心的.NET.core应用程序中使用ASP.NET吗?

我可以在不是HttpClientFactory核心的.NET.core应用程序中使用ASP.NET吗?
EN

Stack Overflow用户
提问于 2018-10-03 08:10:56
回答 3查看 22.5K关注 0票数 29

我读过流行的关于使用https://www.stevejgordon.co.uk/introduction-to-httpclientfactory-aspnetcore的博客文章HttpClientFactory

引用它

一个新的HttpClientFactory特性即将出现在ASP.NET Core2.1中,它有助于解决开发人员在使用HttpClient实例从其应用程序中发出外部web请求时可能遇到的一些常见问题。

所有示例都显示在asp.net应用程序的启动类中将其连接起来。

代码语言:javascript
运行
复制
public void ConfigureServices(IServiceCollection services)
{
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
            services.AddHttpClient();
} 

我的问题是,你能在ASP.NET核心之外使用吗?如果是的话,有例子吗

我认为许多非web应用程序( .net核心应用程序)需要进行web调用,那么为什么这不是.net核心api的一部分而不是asp.net核心api中的一部分呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-10-08 10:40:31

谢谢你的回复。

因此,可以在控制台应用程序中使用。

有几种方法可以做到这一点,这取决于你想去哪条路。以下是两个:

  1. 直接添加到ServiceCollection中,例如services.AddHttpClient()
  2. 使用通用主机例如在.ConfigureServices()方法中添加httpclientFactory

请看这里的在控制台应用程序中使用的博客帖子

票数 11
EN

Stack Overflow用户

发布于 2020-04-13 02:03:31

正如其中一个答案所暗示的,

您不需要ASP.NET来使用它

但是,您需要做一些工作才能将其导入到依赖项注入(DI)中。

  • 安装microsoft.extensions.http (与ASP.NET无关)
  • 配置DI时,请使用此扩展。它注册建筑商/httpclientFactory/..。(看看它在github上的源代码) ServiceCollections.AddHttpClient();
  • 如果要注册具有不同名称/设置的HttpClient与不同的web服务器(不同的设置,例如:不同的基本urls) ServiceCollection.AddHttpClient( "yourClientName",x => x.BaseAddress =新Uri(“http://www.mywebserver.com")”)
  • 如果要添加DelegateHendlers,则需要将其添加到httpClient和DI容器中。 ServiceCollection .AddHttpClient(clientName,x => x.BaseAddress =新Uri("http://www.google.com")) .AddHttpMessageHandler();ServiceCollection.AddScoped();
  • 注册您的HttpClient以使用HttpClientFactory x.GetService().CreateClient("yourClientName"));(x => =>)
  • 要解析http客户端: var client = ServiceProvider.GetService();
票数 8
EN

Stack Overflow用户

发布于 2020-01-29 18:48:00

只是为接受的答案中建议的第一种方法提供示例代码:

代码语言:javascript
运行
复制
services.AddHttpClient<IFoo, Foo>(); // where services is of type IServiceCollection

你的班级看起来:

代码语言:javascript
运行
复制
public class Foo : IFoo
{
    private readonly HttpClient httpClient;

    public Consumer(HttpClient httpClient)
    {
        this.httpClient = httpClient;
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52622586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档