Je suis en train d'essayer d'enregistrer l'URL de l'API dans les paramètres de l'application. Cependant, la configuration.Properties semble être vide. Je ne sais pas comment obtenir le paramètre. dans program.cs:
public static async Task Main(string[] args)
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
//string url = builder.Configuration.Properties["APIURL"].ToString();
foreach (var prop in builder.Configuration.Properties)
Console.WriteLine($"{prop.Key} : {prop.Value}" );
//builder.Services.AddSingleton<Service>(new Service(url));
builder.RootComponents.Add<App>("app");
await builder.Build().RunAsync();
}
À partir de maintenant, vous pouvez utiliser le IConfiguration
.
appsettings.json:
{
"Services": {
"apiURL": "https://localhost:11111/"
}
}
.
using Microsoft.Extensions.Configuration;
public class APIHelper
{
private string apiURL;
public APIHelper(IConfiguration config)
{
apiURL = config.GetSection("Services")["apiURL"];
//Other Stuff
}
}
créer une classe de paramètres:
public class Settings
{
public string ApiUrl { get; set; }
}
créez settings.json dans le dossier wwwroot:
{
"ApiUrl": "http://myapiurlhere"
}
et dans le composant .razor, lisez-le comme ceci:
@inject HttpClient Http
...
@code {
private string WebApuUrl = "";
protected override async Task OnInitializedAsync()
{
var response = await Http.GetFromJsonAsync<Settings>("settings.json");
WebApuUrl = response.ApiUrl;
}
}
Vous pouvez également simplement (appsettings.json dans wwwroot):
public class Program
{
public static async Task Main(string[] args)
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("app");
var url = builder.Configuration.GetValue<string>("ApiConfig:Url");
builder.Services.AddTransient(sp => new HttpClient { BaseAddress = new Uri(url) });
}
}