ASP.NET 5如何找到config.json

3
假设ASP.NET 5网站运行所需的所有内容都放在wwwroot下。但是当我在网站运行时查看该目录时,我没有看到config.json。因此问题是,如果config.json不在wwwroot下,我的网站启动代码如何找到它?
另一个相关的问题是,如果我想创建自己的配置文件(因为config.json只处理简单的名称/值对),我应该将其放在项目中与config.json相邻的位置还是放在wwwroot下以便能够在运行时读取其内容?
1个回答

3

wwwroot文件夹中包含的内容代表着您的站点在HTTP协议下可以访问到的所有内容。您可以在运行时访问配置文件,但是您不能对它们进行Web请求(因为它们不在wwwroot文件夹中)。

ASP.NET会在Startup类中查找根config.json文件:

public Startup(IHostingEnvironment env)
    {
        // Setup configuration sources.
        var configuration = new Configuration()
            .AddJsonFile("config.json")
            .AddJsonFile($"config.{env.EnvironmentName}.json", optional:   true);

那么,如果文件不在wwwroot下,它如何在运行时被访问?我知道在从VS运行时该文件是可用的。但是如果我发布到IIS服务器上 - 只有wwwroot下的内容会被发布,对吧?如果config.json不在wwwroot下,发布的站点如何找到该文件?抱歉,我还有点困惑。 - Keith Hill
1
@KeithHill: wwwroot 下的文件用于提供静态文件,例如,如果你有任何 JavaScript 文件在那里,那么当浏览器请求这些文件时,它们将从此文件夹中提供服务,但你不能直接从浏览器访问文件(例如:HomeController.cs、Startup.cs 和 config.json)。config.json 应该由服务器应用程序自身使用,对最终客户端没有意义。 - Kiran
1
@KeithHill,我也还在努力理解它,据我所知,发布的站点是通过依赖注入找到文件的-http://docs.asp.net/en/latest/conceptual-overview/understanding-aspnet5-apps.html#the-wwwroot-folder(顺便说一句:我认为他们在所有的.json文件上有些过头了,而且其中一些差异可能会让人感到困惑,但他们仍在努力改进)。 - proggrock
@proggrock 如果你能帮我解决这个问题,那将是非常有帮助的。问题链接 - re3el

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接