1 回答

TA貢獻1785條經驗 獲得超8個贊
似乎還沒有修復,解決方法如下。
1.引用System.Net.Http.WinHttpHandler
Nuget包來訪問.NET Core中的WinHttpHandler。
2.創建一個新的MyKeyVaultCredential,繼承自KeyVaultCredential并重寫ProcessHttpRequestAsync
方法
public override async Task ProcessHttpRequestAsync(HttpRequestMessage request, CancellationToken cancellationToken)
?{
? ? ?if (request == null)
? ? ?{
? ? ? ? ?throw new ArgumentNullException("request");
? ? ?}
? ? ?var accessToken = await PreAuthenticate(request.RequestUri).ConfigureAwait(false);
? ? ?if (!string.IsNullOrEmpty(accessToken))
? ? ? ? ?request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
? ? ?else
? ? ?{
? ? ? ? ?var httpClientHandler = new WinHttpHandler()
? ? ? ? ?{
? ? ? ? ? ? ?WindowsProxyUsePolicy = WindowsProxyUsePolicy.UseCustomProxy,
? ? ? ? ? ? ?Proxy = new MyWebProxy(configuration),
? ? ? ? ? ? ?SendTimeout = TimeSpan.FromSeconds(120),
? ? ? ? ? ? ?ReceiveDataTimeout = TimeSpan.FromSeconds(120),
? ? ? ? ? ? ?ReceiveHeadersTimeout = TimeSpan.FromSeconds(120),
? ? ? ? ?};
3.當我實例化 KeyVaultService 時,我必須向 WinHttpHandler 提供我的代理和新的密鑰保管庫憑據實例。
var httpClientHandler = new WinHttpHandler()
? ? ?{
? ? ? ? ?WindowsProxyUsePolicy = WindowsProxyUsePolicy.UseCustomProxy,
? ? ? ? ?Proxy = new MyWebProxy(configuration),
? ? ? ? ?SendTimeout = TimeSpan.FromSeconds(120),
? ? ? ? ?ReceiveDataTimeout = TimeSpan.FromSeconds(120),
? ? ? ? ?ReceiveHeadersTimeout= TimeSpan.FromSeconds(120),
? ? ?};
? ? ?var httpClient = new HttpClient(httpClientHandler);
? ? ?client = new KeyVaultClient(new? MyKeyVaultCredential(configuration, GetToken), httpClient)
希望這可以幫助。
- 1 回答
- 0 關注
- 93 瀏覽
添加回答
舉報