vNext / .NET5 config.json in wwwroot
本文关键字:in wwwroot json config NET5 vNext | 更新日期: 2023-09-27 18:17:56
就我所知,现在首选使用config。Json文件来存储应用程序的配置设置,这很好。我喜欢json格式,因为它更容易阅读。
在发布我的第一个vNext应用程序时,我注意到配置。Json文件似乎发布到
approot/src/my_project/config.json
和我的网站都在一个名为wwwroot
我的web服务器有多个网站设置,每个网站都有自己的"app.config"文件,我可以把它放在网站目录中,设置特定于正在运行的网站。但现在我有两个问题,
配置。
如果我把配置。Json文件放到wwwroot文件夹中,然后客户端可以通过浏览器访问它。
我必须设置我的web服务器忽略配置请求。Json如果它在wwwroot,或者我完全错过了什么?
每个项目应该有一个单独的文件夹。永远不要在wwwroot中放置一个你不想要的文件夹。它最终可能看起来像这样:
/root
/root/Project1
/root/Project1/config.json
/root/Project1/wwwroot
/root/Project2
/root/Project2/config.json
/root/Project2/wwwwroot
显然,你的结构不必完全匹配。一般来说,如果你使用单独的目录来分隔你的项目,并且不把你的配置放在你的wwwroot中,你会没事的。
顺便说一下,你可能想避免在配置中有任何秘密。Json文件。您应该使用源代码控制软件,并且应该避免签入机密内容的情况。可能是环境变量或者秘密API。感谢mason关于在您的web服务器上构建关于vNext的网站的回答,但这里还有另一个选项值得一提,这就是为什么我添加了另一个答案。
如上所述,我有配置。json文件在我的项目中用于开发,并获得我在Startup.cs文件
中使用的文件public Startup(IApplicationEnvironment appEnv)
{
var builder = new ConfigurationBuilder(appEnv.ApplicationBasePath.)
.AddJsonFile("config.json")
.AddEnvironmentVariables();
Configuration = builder.Build();
}
这包括发布时批准的文件。将其包含在wwwroot中也不是一个选项。因此,使用文件结构,您将有一个包含approot和wwwroot文件夹的文件夹,我将代码更改为以下内容,这适用于开发和发布。
public Startup(IHostingEnvironment env)
{
// configuration is in the folder above the wwwroot
var builder = new ConfigurationBuilder(env.MapPath("..''"))
.AddJsonFile("config.json")
.AddEnvironmentVariables();
Configuration = builder.Build();
}
但是,当您发布代码/站点时,配置。Json文件仍然放在批准的文件夹中。要解决这个问题,你必须把它放到项目上。Json文件,像这样
"publishExclude": [
"node_modules",
"bower_components",
"config.json",
"**.xproj",
"**.user",
"**.vspscc"
],
"exclude": [
"wwwroot",
"config.json",
"node_modules",
"bower_components"
]
现在文件可以在项目根目录下,这样你就可以把它保存在源代码管理中,它可以在使用IIS Express进行开发时工作,也不会发布。
希望对别人有所帮助