在ASP.NET WebForms中实现IHTTPCLIENTFACTORY 4.7.2

发布于 2025-02-09 11:39:10 字数 2028 浏览 0 评论 0原文

我正在尝试在使用WebForms创建的项目中实现IHTTPCLIENTFACTORY,.NET FREMERWORK 4.7.2:

  • global.asax:

     公共静态iserviceProvider ServiceProvider;
    
      void application_start(对象发送者,EventArgs e)
      {
          var容器= this.addunity();
          container.RegisterType< ihttpClientFactoryProvider,httpclientFactoryProvider>();
          container.RegisterType< imyanager,mymanager>();
    
          var hostbuilder = new hostbuilder();
          hostbuilder.configureservices(configureservices);
          var host = hostbuilder.build();
    
          ServiceProvider = host.Services;
    
          //在应用程序启动上运行的代码
          RouteConfig.RegisterRoutes(Routetable.Routes);
          Bundleconfig.RegisterBundles(Bondletable.Bundles);
      }
    
      void configureservices(iservCollection Services)
      {
          services.addhttpclient();
      }
     
  • 呼叫ihttpclientFactory的类:

     公共类HTTPCLIENTFACTORYPROVIDER:IHTTPCLIENTFACTORYPROVIDER
      {
      私有ReadOnly IHTTPClientFactory _httpClientFactory;
    
      公共HTTPCLIENTFACTORYPROVIDER(IHTTPCLIENTFACTORY HTTPCLIENTFACTORY)
      {
          _httpClientFactory = httpClientFactory;
      }
    
      公共字符串getData()
      {
          var test = _httpClientFactory.CreateClient();
    
          返回 ””;
      }
      }
     
  • mymanager注入httpclientfactoryprovider:

     公共类Mymanager:Imyanager
       {
        私有Readonly IHTTPCLIENTFACTORYPROVIDER _httpClientFactoryProvider;
    
        公共Mymanager(IHTTPCLIENTFACTORYPROVIDER HTTPCLIENTFACTORYPROVIDER)
       {
          _httpClientFactoryProvider = httpClientFactoryProvider;
       }
    
       公共字符串getData()
       {
          返回_httpClientFactoryProvider.getData();
       }
     }
     
  • page default.aspx:

     公共部分类_DEFAULT:页面
      {
       私人读书imyanager _mymanager;
    
       public _default(Imyanager Mymanager)
       {
          _mymanager = mymanager;
       }
    
       public _default()
       {
    
       }
    
       受保护的void page_load(对象发送者,EventArgs e)
       {
          如果(!iSpostback)
          {
              var结果= _mymanager.getData();
          }
      }
    }
     

问题是_mymanager始终是空的,我做了所有可能的解决方案,但什么也没有。

I'm trying to implement IHttpClientFactory in my project created with webforms, .NET Framework 4.7.2 :

  • Global.asax :

      public static IServiceProvider ServiceProvider;
    
      void Application_Start(object sender, EventArgs e)
      {
          var container = this.AddUnity();
          container.RegisterType<IHttpClientFactoryProvider, HttpClientFactoryProvider>();
          container.RegisterType<IMyanager, MyManager>();
    
          var hostBuilder = new HostBuilder();
          hostBuilder.ConfigureServices(ConfigureServices);
          var host = hostBuilder.Build();
    
          ServiceProvider = host.Services;
    
          // Code that runs on application startup
          RouteConfig.RegisterRoutes(RouteTable.Routes);
          BundleConfig.RegisterBundles(BundleTable.Bundles);
      }
    
      void ConfigureServices(IServiceCollection services)
      {
          services.AddHttpClient();
      }
    
  • The class that call IHttpClientFactory:

      public class HttpClientFactoryProvider : IHttpClientFactoryProvider
      {
      private readonly IHttpClientFactory _httpClientFactory;
    
      public HttpClientFactoryProvider(IHttpClientFactory httpClientFactory)
      {
          _httpClientFactory = httpClientFactory;
      }
    
      public string GetData()
      {
          var test = _httpClientFactory.CreateClient();
    
          return "";
      }
      }
    
  • MyManager that inject HttpClientFactoryProvider :

      public class MyManager : IMyanager
       {
        private readonly IHttpClientFactoryProvider _httpClientFactoryProvider;
    
        public MyManager(IHttpClientFactoryProvider httpClientFactoryProvider)
       {
          _httpClientFactoryProvider = httpClientFactoryProvider;
       }
    
       public string GetData()
       {
          return _httpClientFactoryProvider.GetData();
       }
     }
    
  • Page Default.aspx:

      public partial class _Default : Page
      {
       private readonly IMyanager _mymanager;
    
       public _Default(IMyanager mymanager)
       {
          _mymanager = mymanager;
       }
    
       public _Default()
       {
    
       }
    
       protected void Page_Load(object sender, EventArgs e)
       {
          if (!IsPostBack)
          {
              var result = _mymanager.GetData();
          }
      }
    }
    

The problem is that _mymanager is always null, i have done all possible solutions but nothing.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文