我嘗試了什么:
HelloWorldController.cs
public class HelloWorldController : Controller
{
public string Index()
{
StringBuilder output = new StringBuilder();
// How do I do this?
IConfiguration configuration = app.Configuration;
List<String> list = configuration.options.ViewLocationExpanders;
foreach(String item in list)
{
output.Append(HtmlEncoder.Default.Encode($"Looking in " item));
}
return output.ToString();
}
...
}
我得到了什么:不會編譯
我所期望的:
https://localhost:7127/HelloWorld
Looking in /Views/HelloWorld/Index.cshtml
Looking in /Views/Shared/Index.cshtml
Looking in /Pages/Shared/Index.cshtml
uj5u.com熱心網友回復:
您需要將配置注入建構式。這個概念稱為依賴注入 (DI.)
類需要的所有依賴都注冊進去startup.cs
,然后通過建構式注入到類中。
[Route("")]
public class HomeController : Controller
{
private Configuration _configuration;
public HomeController(IOptions<Configuration> configuration)
{
_configuration = configuration.Value;
}
[HttpGet, Route("Healthcheck")]
public string Healthcheck()
{
return "Website is up. Version: " _configuration.IMAGE_TAG ?? "Not available";
}
}
在 startup.cs 中,這是Configuration
類的注冊方式。
public IConfiguration Configuration { get; set; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
var connectionString = Configuration.GetValue<string>("DbEndpoints:DbConnectionString");
services.Configure<Project.Server.Common.Configuration>(Configuration);
}
請注意,這是在專案中某處定義的常規類,它具有 JSON 配置映射到(因此它具有與JSON 檔案Project.Server.Common.Configuration
相同的結構。)appsettings
示例配置.cs
public class Configuration
{
public string ASPNETCORE_ENVIRONMENT { get; set; }
public string IMAGE_TAG { get; set; }
public DatabaseEndpoint DbEndpoints { get; set; }
}
public class DatabaseEndpoint
{
public string DbConnectionString { get; set; }
}
請注意,您也可以訪問環境變數ASPNETCORE_ENVIRONMENT
,只要您將它們作為startup.cs
建構式的一部分注入。(注意AddEnvironmentVariables
下面的宣告。
public Startup(IWebHostEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddEnvironmentVariables()
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: false)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: false)
.AddJsonFile("staticsettings.json", optional: true, reloadOnChange: false);
Configuration = builder.Build();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/525794.html
上一篇:.NETCoreApi中的嵌套物體和性能與EntityFrameworkCore
下一篇:為什么User.FindFirstValue(claimtypes.nameidentifier)總是回傳null?