Google Code Prettify

如何在 Class Library 中使用 IHttpClientFactory

在 ASP.NET Core 中,使用 IHttpClientFactory 可以有效地管理和重用 HttpClient 實例。若要在 Class Library 中使用 IHttpClientFactory,需要進行一些設置。以下是具體步驟:

1. 建立 ASP.NET Core 應用程式並設定 IHttpClientFactory
首先,在你的 ASP.NET Core 應用程式中配置 IHttpClientFactory。這通常是在 Startup.cs 中完成的。

Startup.cs
csharp

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddHttpClient(); // 註冊 IHttpClientFactory 服務
        services.AddTransient(); // 註冊你的服務
    }

    // 其他設定...
}


2. 在 Class Library 中使用 IHttpClientFactory
接下來,在你的 Class Library 中建立一個服務類別,並注入 IHttpClientFactory。
IMyService.cs (Class Library)
csharp

public interface IMyService
{
    Task GetDataAsync();
}


MyService.cs (Class Library)
csharp

using System.Net.Http;
using System.Threading.Tasks;

public class MyService : IMyService
{
    private readonly IHttpClientFactory _httpClientFactory;

    public MyService(IHttpClientFactory httpClientFactory)
    {
        _httpClientFactory = httpClientFactory;
    }

    public async Task GetDataAsync()
    {
        var client = _httpClientFactory.CreateClient();
        var response = await client.GetAsync("https://api.example.com/data");
        response.EnsureSuccessStatusCode();

        var data = await response.Content.ReadAsStringAsync();
        return data;
    }
}


3. 在 ASP.NET Core 應用程式中使用 Class Library 中的服務
最後,在 ASP.NET Core 應用程式中使用你在 Class Library 中建立的服務。

HomeController.cs (ASP.NET Core 應用程式)
csharp

using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;

public class HomeController : Controller
{
    private readonly IMyService _myService;

    public HomeController(IMyService myService)
    {
        _myService = myService;
    }

    public async Task Index()
    {
        var data = await _myService.GetDataAsync();
        ViewData["Data"] = data;
        return View();
    }
}


4. 設定依賴注入
確保你的 ASP.NET Core 應用程式已正確設定依賴注入,以便 IHttpClientFactory 和你的服務可以被注入。

Startup.cs
csharp

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddHttpClient(); // 註冊 IHttpClientFactory 服務
        services.AddTransient(); // 註冊你的服務
    }

    // 其他設定...
}



5. 總結
以下是主要步驟的總結:

在 ASP.NET Core 應用程式中註冊 IHttpClientFactory。
在 Class Library 中建立服務類別並注入 IHttpClientFactory。
在 ASP.NET Core 應用程式中使用 Class Library 中的服務。
這樣,你就可以在 Class Library 中使用 IHttpClientFactory,並將這些服務注入到你的 ASP.NET Core 應用程式中,實現高效的 HttpClient 管理和重用。