在Blazor app / Razor中,配置总是NULL.net CORE



无论我尝试什么,IConfiguration总是空的。我也尝试过将singleton添加到启动类,但总是null…

启动类

public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }

这是我的安全类

IConfiguration _configuration { get;} **<<always null**
public Security(IConfiguration configuration) **<<always null**
{
_configuration = configuration;
}
public  string GetConnectionString()
{
string connectionString = _configuration.GetConnectionString("localDb");
return connectionString;
}

这是我的索引。剃须刀页

namespace WebbiSkoolsQuizManager.Pages
{
public class IndexBase : ComponentBase
{
public IConfiguration Configuration { get; }
public async Task TryLogin(string user, string pass)
{

}


public async Task AddUserHash(string username, string password)
{
Security secure = new Security(Configuration);
string connectionstring = secure.GetConnectionString();


}
}
}

Appsettings.json

{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"ConnectionKeys": {
"localDb": "Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=Quiz;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"
},
"AllowedHosts": "*"
}

提前感谢你,我已经搜索了高低,关于修复blazor特定的,但我找不到任何东西…(P.S its .Net core 3)

我猜这是:public IConfiguration Configuration { get; }

应:

[Inject]
public IConfiguration Configuration { get; }

注意:你不能简单地定义一个服务的属性,并期望它被填充…如果您使用的是Razor组件类定义(.cs),那么您可以通过使用[Inject]属性注入服务。如果你使用的是Razor组件(.razor),你可以在组件的视图部分使用@inject指令,例如:

@page "/"
@inject IConfiguration Configuration

@code部分,如下所示:

@code
{
[Inject]
public IConfiguration Configuration { get; }
}
还需要注意的是,如果你想把服务注入到一个普通的c#类中,你需要使用构造函数注入

我开始了一个新的blazor项目。Net 6),当我@注入配置到我的.razor文件时,配置对象总是空的。

最新更新