gpt4 book ai didi

c# - Configuration.GetSection 返回空值

转载 作者:行者123 更新时间:2023-11-30 18:14:14 24 4
gpt4 key购买 nike

我无法让我的 Configuration.GetSection 返回 .Value 中的数据。我想我已经实现了这个 question 中的所有建议,但仍然无法正常工作。

应用设置.json

{
"AmazonSettings": {
"BaseUrl": "https://testing.com",
"ClientID": "123456",
"ResponseType": "code",
"RedirectUri": "https://localhost:44303/FirstTimeWelcome"
},
}

启动:

public IConfiguration Configuration { get; }

public Startup(IHostingEnvironment env)
{
//Set up configuration sources.
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json")
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();

Configuration = builder.Build();
}

配置服务:

public void ConfigureServices(IServiceCollection services)
{

services.AddOptions();

services.Configure<AmazonSettings>(Configuration.GetSection("AmazonSettings"));

services.AddMvc()

AmazonSettings 类:

public class AmazonSettings
{
public string BaseUrl { get; set; }
public string ClientID { get; set; }
public string RedirectUri { get; set; }
public string ResponseType { get; set; }

}

我正在尝试通过 IOptions 访问 AmazonSettings.Value:

public class HomeController : Controller
{
private readonly AmazonSettings _amazonSettings;

public IActionResult Index()
{
ViewBag.LoginUrl = _amazonSettings.BaseUrl;
return View("/Pages/Index.cshtml"); ;
}

public HomeController(IOptions<AmazonSettings> amazonSettings)
{
_amazonSettings = amazonSettings.Value;
}

当我调试时,值为空:

Debug - Value is empty

最佳答案

我的问题是我在 HomeController 中的代码从未受到影响。

如果我在我的 Controller 上方添加 Routes["home"] 并导航到 localhost/home,我可以到达那里,并且 .Value 被填充。但是,我无法使用 Routes[""],因为我使用的是 Razor 页面,这导致了 ambiguousActionException。

然后我意识到我根本不需要使用 Razor Pages 的 Controller 。我可以直接从 Index.cshtml.cs 访问我的数据

public class IndexModel : PageModel
private readonly AmazonSettings _amazonSettings;
public string LoginUrl;

public IndexModel(IOptions<AmazonSettings> amazonSettings)
{
_amazonSettings = amazonSettings.Value;
}

在我的 Index.cshtml 页面中进行以下访问:

<a href=@Model.LoginUrl><h1>@Model.LoginUrl</h1></a>

事实证明,在调试时,启动代码中 GetSection 返回的 .Value 可能为空,但它会在到达 IndexModel 时填充。

关于c# - Configuration.GetSection 返回空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50669724/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com