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"文件,我可以把它放在网站目录中,设置特定于正在运行的网站。但现在我有两个问题,

  1. 配置。

  2. 如果我把配置。Json文件放到wwwroot文件夹中,然后客户端可以通过浏览器访问它。

我必须设置我的web服务器忽略配置请求。Json如果它在wwwroot,或者我完全错过了什么?

vNext / .NET5 config.json in 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进行开发时工作,也不会发布。

希望对别人有所帮助