gpt4 book ai didi

asp.net - 如何在 ASP.NET 中将 IHttpClientFactory 添加到 NInject

转载 作者:行者123 更新时间:2023-12-03 23:50:13 25 4
gpt4 key购买 nike

我正在尝试添加 IHttpClientFactory在我的 C# 中注入(inject) NInject ASP.NET 网络表单 应用程序,以便我可以在服务中使用它。网上有很多关于使用 IHttpClientFactory 的文档。 (并且不会创建大量 HttpClient 实例),但是:

  • 文档/示例基于使用 .NET Core 的接口(interface),我正在使用 ASP.NET(即 .NET Framework),例如https://docs.microsoft.com/en-us/dotnet/architecture/microservices/implement-resilient-applications/use-httpclientfactory-to-implement-resilient-http-requests , https://docs.microsoft.com/en-us/aspnet/core/fundamentals/http-requests?view=aspnetcore-3.0
  • 文档往往是关于接线 IHttpClientFactory使用微软自己的依赖注入(inject)系统而不是 NInject。

  • 那么,我尝试了什么?好吧,我真的不知道从哪里开始,虽然 IHttpClientFactorySystem.Net.Http 中有明确的定义命名空间,没有可以将其绑定(bind)到的具体实现。我想写这个:
    public class ClassLibNinjectModule : NinjectModule
    {
    public override void Load()
    {
    Bind<System.Net.Http.IHttpClientFactory>().ToConstant<System.Net.Http.HttpClientFactory>();
    }
    }

    然而:
  • System.Net.Http.HttpClientFactory是静态类型,它没有实现 System.Net.Http.IHttpClientFactory (不同的方法:CreateClient() vs Create())
  • 我似乎不知道如何将服务绑定(bind)到静态提供程序。

  • 谁能告诉我哪里出错了?谢谢。

    最佳答案

    安装 nuget 包:

    Microsoft.Extensions.Http
    Microsoft.Extensions.DependencyInjection
    Microsoft.Extensions.Hosting

    接下来添加到您的 global.asax.cs:
    using Microsoft.Extensions.Http;
    using Microsoft.Extensions.DependencyInjection;
    using Microsoft.Extensions.Hosting;

    namespace....
    ....
    public static IServiceProvider ServiceProvider;

    void Application_Start(object sender, EventArgs e)
    {
    var hostBuilder = new HostBuilder();
    hostBuilder.ConfigureServices(ConfigureServices);
    var host = hostBuilder.Build();

    ServiceProvider = host.Services;
    }

    void ConfigureServices(IServiceCollection services)
    {
    services.AddHttpClient(); //extension method that add IHttpClientFactories
    *inject services here*
    }

    关于asp.net - 如何在 ASP.NET 中将 IHttpClientFactory 添加到 NInject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59092064/

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