据我所想,现在倾向于使用config.json文件来存储应用程序的配置设置,这是很棒的。喜欢json格式,并发现它更容易阅读。
但是,在发布我的第一个vNext应用程序时,我注意到config.json文件似乎已发布到
approot/src/my_project/config.json
我的网站在一个叫做wwwroot的文件夹里
我的网站服务器有多个网站设置,每个网站过去都有自己的"app.config“文件,我可以将该文件放在网站目录中,设置特定于该网站的运行。但现在我有两个问题,
如果是在www.root中,我是否必须设置我的web服务器来忽略对config.json的请求,还是我完全遗漏了什么?
发布于 2015-10-15 15:53:54
感谢梅森关于在你的网站服务器上构建vNext网站的回答,但这里还有另一个值得提及的选项,那就是为什么我要添加另一个答案。
如前所述,我的项目中有用于开发的config.json文件,为了获得我在Startup.cs文件中使用的文件
public Startup(IApplicationEnvironment appEnv)
{
var builder = new ConfigurationBuilder(appEnv.ApplicationBasePath.)
.AddJsonFile("config.json")
.AddEnvironmentVariables();
Configuration = builder.Build();
}这包括发布时批准文件中的文件。将其包含在wwwroot中也不是一个选项。因此,使用文件结构,您将有一个文件夹,其中包含了a和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();
}但是,当您发布代码/站点时,config.json文件仍然放在approot文件夹中。要解决这个问题,您必须将其放到project.json文件中,如下所示
"publishExclude": [
"node_modules",
"bower_components",
"config.json",
"**.xproj",
"**.user",
"**.vspscc"
],
"exclude": [
"wwwroot",
"config.json",
"node_modules",
"bower_components"
]现在,该文件可以在项目根中,因此您可以保存它的源代码管理,它可以在使用IIS Express进行开发时工作,而且它也没有发布。
希望这能帮到别人
发布于 2015-10-15 15:17:36
每个项目都应该有一个单独的文件夹。永远不要把一个文件夹放进你不想要的文件夹里。它最终可能看起来像这样:
/root
/root/Project1
/root/Project1/config.json
/root/Project1/wwwroot
/root/Project2
/root/Project2/config.json
/root/Project2/wwwwroot很明显,你的结构不一定要完全匹配。但是,通常情况下,如果您使用单独的目录来分隔您的项目,并且不要将您的配置放在自己的wwwroot中,那么您就可以了。
顺便说一句,首先您可能希望避免在config.json文件中有任何秘密。你应该使用源代码控制软件,并且你应该避免秘密的东西被签入的情况。可能是环境变量或机密API。
https://stackoverflow.com/questions/33151690
复制相似问题