[英]How to add bearer token to autogenerated OpenApiToCSharpClient?
我有使用 OpenApiToCSharpClient 生成的客戶端,但每個請求都是 401 未經授權的。 我在 HttpClient 中添加了不記名令牌,如下所示:
ClientEngine.HttpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.Token);
生成的客戶端是這樣使用的:
var userClient = new UserClient(HttpClient);
UserAll.AddRange(await userClient.GetAllAsync());
但問題是 auth header 未添加到請求中(自動生成的代碼如下):
...
request_.Method = new System.Net.Http.HttpMethod("GET");
request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json"));
PrepareRequest(client_, request_, urlBuilder_);
var url_ = urlBuilder_.ToString();
request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute);
PrepareRequest(client_, request_, url_);
var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false);
var disposeResponse_ = true;
...
請求已發送,但只有client_
具有授權標頭,但request_
沒有。 據我所知,授權標頭也應該添加到請求中,但它們不是。 我在nswag.json
文件中沒有任何與授權相關的屬性 - 只有以下屬性與 HttpClient 相關:
"disposeHttpClient": true,
"injectHttpClient": true,
"httpClientType": "System.Net.Http.HttpClient",
什么不見了?
上面的一切都是正確的,但顯然,自動重定向到 https 是問題 - 不知何故,當請求從 http 升級到 https(自動)時,它會剝離標題。 有趣的是, Postman 沒有這個問題,只有HttpClient
。
解決方案 - 在Startup.cs
中,執行以下操作:
if (!env.IsDevelopment())
{
app.UseHttpsRedirection();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.