我将旧的 CMS 从 WebForms .Fet 框架升级到 .net 核心。我从实现 httpclientfactory 的前端开始。
在我升级后端之前,我想在 .net 核心和 .net 框架解决方案上使用相同的数据层,但我很困惑如何在我的 WebForms 解决方案中实现它
在可以从 webforms 和 .net 核心访问的 API 帮助程序类中,我实现了以下内容:
private IHttpClientFactory _httpClientFactory;
public WebSite(IHttpClientFactory httpClientFactory)
{
_httpClientFactory = httpClientFactory;
}
获取数据的功能是:
public async Task<WebSite> GetSingle(int id)
{
var client = _httpClientFactory.CreateClient(); // and so on ///
}
在 .net 核心解决方案上,我初始化 HttpClientFactory,如下所示:
private readonly IHttpClientFactory _clientFactory;
private readonly WebSite _webSite;
在 net core 解决方案 og 中初始化 IHttpClientFactory
public IndexModel(IHttpClientFactory clientFactory)
{
_clientFactory = clientFactory;
_webSite = new WebSite(_clientFactory);
}
我得到的数据如下:
WebSite currentWebsite = _webSite.GetSingle(1);
我在我的 WebForms 应用程序中完成了以下操作:
已安装
Autofac.Extensions.DependencyInjection
Microsoft.Extensions.DependencyInjection
Microsoft.Extensions.Hosting
Microsoft.Extensions.Http
将以下内容添加到 global.asax
public static IServiceProvider ServiceProvider;
protected 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
var providerFactory = new AutofacServiceProviderFactory();
providerFactory.CreateBuilder(services);
}
问题是,如何将 httpclientfactoryclient 注入到我的 WebForms 应用程序中,以便可以像在 .net 核心解决方案中一样使用 _webSite.GetSingle(1)