web-dev-qa-db-fra.com

Comment accéder aux paramètres de l'application dans Blazor Webassembly

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();
}
4
Ahmad Al-taher

À 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
        }

    }
0
Inktkiller

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;
    }
}
0
Zviadi

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) });
    }
}
0
Sunday