我正在開發帶有后端 API 的 Blazor WASM 應用程式。這是在 .Net6 中完成的
我的問題是我希望能夠在一個位置設定我的基地址 - 但我所擁有的似乎不起作用。我已經驗證,如果我輸入完整的 URI,我可以與 API 對話。
我的客戶端 Program.CS 檔案:
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("#app");
builder.RootComponents.Add<HeadOutlet>("head::after");
builder.Services.AddScoped<OrgHealthAuthorizationMessageHandler>();
builder.Services.AddHttpClient("OrgHealth.ServerAPI", client => client.BaseAddress = new Uri(builder.HostEnvironment.BaseAddress))
.AddHttpMessageHandler<OrgHealthAuthorizationMessageHandler>();
builder.Services.AddTransient(sp => sp.GetRequiredService<IHttpClientFactory>().CreateClient("OrgHealth.ServerAPI"));
builder.Services.AddMsalAuthentication(options =>
{
builder.Configuration.Bind("AzureAdB2C", options.ProviderOptions.Authentication);
options.ProviderOptions.DefaultAccessTokenScopes.Add("https://authorghealth.onmicrosoft.com/22222222-2222-22222-22222-222222222222/API.Access.All");
});
await builder.Build().RunAsync();
我的 OrgHealthAuthorizationMessageHandler.cs
public class OrgHealthAuthorizationMessageHandler : AuthorizationMessageHandler
{
public OrgHealthAuthorizationMessageHandler(IAccessTokenProvider AProvider, NavigationManager ANavigation) : base(AProvider, ANavigation)
{
ConfigureHandler(authorizedUrls: new[] { "https://localhost:7061/" });
}
}
這是我正在努力作業的電話:
var test = await Http.GetStringAsync("AzureStorage/GetTestData");
當我運行它時它不起作用并給我一個錯誤,表明它擊中了不正確的地址 - 我已經驗證它放置了錯誤的本地主機資訊作為 URI 的一部分。我的理解是應該使用 OrgHealthAuthorizationMessageHandler 中的資訊。但事實并非如此。
如果我這樣做;
var test = await Http.GetStringAsync("https://localhost:7061/AzureStorage/GetTestData");
它作業得很好。我在這個配置中缺少什么?
uj5u.com熱心網友回復:
我的理解是應該使用 OrgHealthAuthorizationMessageHandler 中的資訊。但事實并非如此。
你的理解是錯誤的。當您使用相對 uri 時,BaseAddress會附加 。所以你需要將它設定為https://localhost:7061/.
uj5u.com熱心網友回復:
你可以像這樣分配基地址
var baseAddress = "https://localhost:7061";
var api = "/AzureStorage/GetTestData";
Http.BaseAddress = new Uri(baseAddress);
.... other int http client code
var test = await Http.GetStringAsync(api);
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/398811.html
標籤:C# 接口 西装外套 blazor-webassembly
上一篇:如何通過API實時更新加密價格
下一篇:Dropboxapi上傳檔案
