簡體   English   中英

如何將不記名令牌添加到自動生成的 OpenApiToCSharpClient?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM