[英]How to read appsetting.json from any class blazor serverside
[英]Appsetting.json saying not found trying to use a Blazor WebAssembly
我正在开发一个原型应用程序。 我们在哪里使用新的 Blazor WebAssembly。 我要做的是访问我的 JSON 文件以访问我们设置的端点以进行 API 调用。 这是我目前拥有的
appsettings.json:
"Endpoints": {
"AuthEndpoint": "https://auth"
}
程序.cs:
public static async Task Main(string[] args)
{
var config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.Build();
//var endpointSettings = new EndpointSettings()
//{
// AuthEndpoint = config["Endpoints:AuthEndpoint"]
//};
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("#app");
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) })
.AddScoped<IAuthenticationService, AuthenticationService>()
.AddTransient(_ =>
{
return config.GetSection("Endpoints")
.Get<EndpointSettings>();
})
.AddTransient<IAuthClient, AuthClient>();
await builder.Build().RunAsync();
}
我试图找出为什么会发生这种情况以及我能做些什么来解决它
例如:
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args)
.Build()
.Run();
}
public static IWebAssemblyHostBuilder CreateHostBuilder(string[] args) =>
BlazorWebAssemblyHost.CreateDefaultBuilder()
.UseBlazorStartup<Startup>();
}
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton(GetConfiguration());
}
public void Configure(IComponentsApplicationBuilder app )
{
app.AddComponent<App>("app");
}
public APISetting GetConfiguration()
{
// Get the configuration from embedded dll.
using (var stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("appsettings.json"))
using (var reader = new System.IO.StreamReader(stream))
{
return System.Text.Json.JsonSerializer.Deserialize<APISetting>(reader.ReadToEnd());
}
}
}
其中 APISetting class “匹配”您的 appsettings.json:
public class APISetting
{
public string AuthEndpoint { get; set; }
...
...
}
和 appsettings.json “构建操作”设置为“嵌入式资源”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.