web-dev-qa-db-ja.com

ブレザーWebアセンブリのappsettingsにアクセスする方法

私は現在、アプリの設定でAPIのURLを保存しようとしています。ただし、configuration.Propertiesは空のようです。設定の仕方がわかりません。 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

現在、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

設定クラスを作成します。

public class Settings
{
    public string ApiUrl { get; set; }
}

wwwrootフォルダーにsettings.jsonを作成します。

{
    "ApiUrl": "http://myapiurlhere"
}

.razorコンポーネントでは、次のように読みます。

@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

(wwwrootのappsettings.json)でもできます:

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