如何将 IHttpClientFactory 添加到 NInject in ASP.NET
How to add IHttpClientFactory to NInject in ASP.NET
我正在尝试在我的 C# ASP.NET Web Forms 应用程序中将 IHttpClientFactory
添加到 NInject 以便我可以在服务。网上有很多关于使用 IHttpClientFactory(而不是创建大量 HttpClient
实例)的文档,但是:
- Documentation/Examples 基于与 .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
- 文档倾向于使用 Microsoft 自己的依赖注入系统而不是 NInject。
来连接 IHttpClientFactory
那么,我尝试了什么?好吧,我真的不知道从哪里开始,因为虽然 IHttpClientFactory
在 System.Net.Http
命名空间中定义得很好,但没有公开的具体实现可以绑定它。我想这样写:
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()
)
- 我似乎不知道如何将服务绑定到静态提供程序。
谁能告诉我哪里出错了?谢谢。
安装 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*
}
我正在尝试在我的 C# ASP.NET Web Forms 应用程序中将 IHttpClientFactory
添加到 NInject 以便我可以在服务。网上有很多关于使用 IHttpClientFactory(而不是创建大量 HttpClient
实例)的文档,但是:
- Documentation/Examples 基于与 .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
- 文档倾向于使用 Microsoft 自己的依赖注入系统而不是 NInject。 来连接
IHttpClientFactory
那么,我尝试了什么?好吧,我真的不知道从哪里开始,因为虽然 IHttpClientFactory
在 System.Net.Http
命名空间中定义得很好,但没有公开的具体实现可以绑定它。我想这样写:
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()
vsCreate()
)- 我似乎不知道如何将服务绑定到静态提供程序。
谁能告诉我哪里出错了?谢谢。
安装 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*
}