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

Chr*_*lsh 8 asp.net webforms ninject .net-framework-version

我正在尝试将IHttpClientFactoryNInject 添加到我的 C# ASP.NET Web 窗体应用程序中,以便我可以在服务中使用它。然而,网上有很多关于使用IHttpClientFactory(而不是创建大量实例)的文档:HttpClient

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

那么,我尝试了什么?好吧,我不知道从哪里开始,因为尽管IHttpClientFactory在命名空间中定义良好System.Net.Http,但没有公开可将其绑定到的具体实现。我想写这个:

public class ClassLibNinjectModule : NinjectModule
{
    public override void Load()
    {
        Bind<System.Net.Http.IHttpClientFactory>().ToConstant<System.Net.Http.HttpClientFactory>();
    }
}
Run Code Online (Sandbox Code Playgroud)

然而:

  1. System.Net.Http.HttpClientFactory是静态类型并且它不实现System.Net.Http.IHttpClientFactory(不同的方法:CreateClient()vs Create()
  2. 我似乎不知道如何将服务绑定到静态提供者。

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

zol*_*y13 3

安装nuget包:

Microsoft.Extensions.Http
Microsoft.Extensions.DependencyInjection
Microsoft.Extensions.Hosting
Run Code Online (Sandbox Code Playgroud)

接下来添加到您的 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*
}
Run Code Online (Sandbox Code Playgroud)

  • 我不认为这个答案实际上解决了将 HttpClientFactory 与 Ninject 一起使用的问题。为了解决这个问题,我推荐这篇文章:https://hamidmosalla.com/2020/05/22/using-ihttpclientfactory-with-asp-net-mvc5/ (3认同)
  • 有一些缺点。这是一些链接:/sf/ask/3533200961/ (2认同)