【问题标题】:How to add IHttpClientFactory to NInject in ASP.NET如何在 ASP.NET 中将 IHttpClientFactory 添加到 NInject
【发布时间】:2019-11-28 15:28:01
【问题描述】:

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

  1. 文档/示例基于使用 .NET Core 的接口,我使用的是 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
  2. 文档往往是关于使用 Microsoft 自己的依赖注入系统而不是 NInject 连接 IHttpClientFactory

那么,我尝试了什么?好吧,我不知道从哪里开始,因为虽然IHttpClientFactorySystem.Net.Http 命名空间中定义得很好,但我没有可以将它绑定到的具体实现。我想写这个:

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

但是:

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

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

【问题讨论】:

  • 也有这个问题。在我的项目中,thera 只是 NinjectModules。没有启动

标签: asp.net webforms ninject .net-framework-version


【解决方案1】:

安装 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*
}

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2014-06-21
  • 2015-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-29
  • 1970-01-01
相关资源
最近更新 更多