VS 2019 中 IIS Express 调试器的 .Net Core MVC appsettings.json 文件在哪里

Posted

技术标签:

【中文标题】VS 2019 中 IIS Express 调试器的 .Net Core MVC appsettings.json 文件在哪里【英文标题】:Where is the .Net Core MVC appsettings.json file for the IIS Express debugger in VS 2019 【发布时间】:2019-06-10 16:57:19 【问题描述】:

我需要在我的 appsettings.json 文件中编辑一个连接字符串以调试 .Net Core MVC 应用程序。当我使用 IIS Express 调试器运行应用程序时,我的应用程序构建为 bin\Debug\netcoreapp2.2。在此目录中,我正在使用测试所需的值编辑 appsettings.Development.json 配置文件。我知道应用程序正在提取 appsettings.json 文件的正确变体。但是,我不认为调试器正在查看bin\Debug\netcoreapp2.2 中的文件,因为当我编辑该文件时,我的应用程序中不存在更改。 IIS Express 调试器从哪里加载 appsettings.json 文件?

更多上下文的屏幕截图。

我从这个工具栏运行调试器。

调试器将文件构建到bin\Debug\netcoreapp2.2

然后我编辑必要的 appsettings.json 文件。该文件在以后的构建中不会被覆盖,因为我将“复制到输出目录”属性设置为“如果较新则复制”

我验证了 ASPNETCORE_ENVIRONMENT 变量设置为调试器的“开发”。

但是当我去调试我的应用程序时,我在项目的 appsettings.json 中获得了默认连接字符串,而不是在 bin\Debug\netcoreapp2.2 目录的 appsettings.json 中获得了修改后的连接字符串

【问题讨论】:

嗯,这并不理想。有没有办法将其配置为查看 bin 文件夹? 也许这个问题可以帮到你:***.com/questions/37858312/… @ChrisStillwell 为什么将它放在根文件夹中并不理想? @AliK,主要是因为我添加连接字符串的文件受源代码控制,我不想冒险将凭据意外推送到存储库。如果我可以编辑 bin 文件夹中的文件,我就不用担心了。 我会拥有 appsettings.json,这是您始终提交到源代码管理的主文件,然后是一个名为 appsettings.development.json 的副本,这是您在 Visual Studio 中启动应用程序时运行的副本。 .development.json 永远不会提交到源代码管理,每个开发人员都可以拥有自己的 .dev.json 文件副本。这种方法效果很好。 【参考方案1】:

默认情况下,IConfiguration 读取项目文件夹下的*.json 文件。

要在其他地方读取*.json文件比如bin/Debug/netcoreapp2.2,你可以配置ConfigureAppConfiguration比如

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .ConfigureAppConfiguration((hostingContext, config) =>
            
                config.AddJsonFile(
                    "bin/Debug/netcoreapp2.2/appsettings.Development.json", optional: false, reloadOnChange: true);
            );

然后像这样使用它

public class HomeController : Controller

    private readonly IConfiguration configuration;
    public HomeController(IConfiguration configuration)
    
        this.configuration = configuration;
    
    public IActionResult Index()
    
        return Ok(configuration.GetConnectionString("DefaultConnection"));
        //return View();
    

【讨论】:

这对我有用,我只是在新代码中添加了一个#if DEBUG 指令,所以我只在调试时读取该文件。谢谢。

以上是关于VS 2019 中 IIS Express 调试器的 .Net Core MVC appsettings.json 文件在哪里的主要内容,如果未能解决你的问题,请参考以下文章

vs2012使用64位IIS EXPRESS调试

在 VS2013 中调试时的身份验证问题 - iis express

在 VS2012 中调试 MVC 应用程序尝试启动 IIS Express 两次

VS2015调试时没有启动IIS Express Web服务器

关于VS调试Web 无法启动IIS Express Web 服务器的问题解决

VS2013 VS2015 VS2017调试出现无法启动iis express web服务器