我的appsettings.json檔案包含以下部分。
"TrackAndTrace": {
"DebugBaseUrl": "https://localhost:44360/api",
"BaseUrl": "https://example.com/api",
"Username": "Username",
"Password": "Password",
"CompanyCode": "CODE"
},
然后我配置HttpClient如下:
services.AddHttpClient<TestApi>()
.ConfigurePrimaryHttpMessageHandler(() =>
{
return new HttpClientHandler()
{
// I want to incorporate this somehow:
// services.Configure<TrackAndTraceSettings>(Configuration.GetSection("TrackAndTrace"))
Credentials = new NetworkCredential(????, ???),
};
});
我的問題是:如何從此處的組態檔中獲取用戶名和密碼,并將其分配給HttpClientHandler.Credentials?
理想情況下,它可以以一種有效的方式完成,這樣它只需要從設定檔案中讀取一次。
uj5u.com熱心網友回復:
您可以使用
var credentials = Configuration.GetSection("TrackAndTrace").Get<TrackAndTrace>();
TrackAndTrace模型應該是這樣的;
public class TrackAndTrace{
public string DebugBaseUrl {get;set;}
public string BaseUrl {get;set;}
public string Username {get;set;}
public string Password {get;set;}
public string CompanyCode {get;set;}
}
然后你配置服務;
var credentials = Configuration.GetSection("TrackAndTrace").Get<TrackAndTrace>();
services.AddHttpClient<TestApi>()
.ConfigurePrimaryHttpMessageHandler(() =>
{
return new HttpClientHandler()
{
Credentials = new NetworkCredential(credentials.Username, credentials.Password),
};
});
uj5u.com熱心網友回復:
使用多載來ConfigurePrimaryHttpMessageHandler接受帶有IServiceProvider引數的回呼。
// assuming you've set up the configuration in ConfigureServices method:
// services.Configure<TrackAndTraceSettings>(Configuration.GetSection("TrackAndTrace"))
services.AddHttpClient<TestApi>()
.ConfigurePrimaryHttpMessageHandler((serviceProvider) =>
{
var config = serviceProvider.GetRequiredService<IOptions<TrackAndTraceSettings>>().Value;
return new HttpClientHandler()
{
Credentials = new NetworkCredential(config.Username, config.Password),
};
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/363148.html
