You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core 2集成测试读取appsettings.json无值问题求助

解决.NET Core 2.0集成测试中的配置读取与工作目录问题

兄弟,我之前也踩过类似的坑,给你梳理下解决方案,先澄清一个关键认知:你找不到project.json是完全正常的——.NET Core 2.0已经彻底抛弃了project.json格式,改用*.csproj文件管理项目配置,所以不用再纠结它啦。

接下来针对你遇到的两个核心问题逐一解决:

1. 工作目录指向集成测试的bin目录而非WebApi项目目录

集成测试项目默认会把自身的输出目录(也就是你看到的./IntegrationTests/bin/Debug/netcoreapp2.0)作为工作目录,这就是root变量路径不符合预期的原因。有两种解决方式:

方法一:通过Visual Studio可视化设置调整

右键你的集成测试项目 → 属性 → 切换到调试标签页 → 在工作目录栏中,设置为你的WebApi项目根目录(比如$(SolutionDir)\YourWebApiProjectName)。这样测试运行时就会自动以WebApi的目录作为当前工作目录。

方法二:通过代码动态指定

在测试类的初始化逻辑里(比如xUnit的IClassFixture初始化、NUnit的[SetUp]方法),手动设置当前工作目录:

// 假设WebApi项目在集成测试项目的上两级目录下,根据你的实际路径调整层级
var webApiRootPath = Path.GetFullPath(Path.Combine(AppContext.BaseDirectory, "../../../YourWebApiProjectName"));
Directory.SetCurrentDirectory(webApiRootPath);

2. IConfiguration读取自定义数据为空

这个问题大概率是测试项目没正确加载WebApi的appsettings.json,或者加载了测试项目自身的配置文件(如果存在的话)。按以下步骤修复:

步骤1:明确加载WebApi的配置文件

在测试项目的配置初始化代码中,结合上面设置的正确工作目录,指定加载WebApi的配置文件:

var configuration = new ConfigurationBuilder()
    .SetBasePath(Directory.GetCurrentDirectory()) // 这里已经是WebApi的根目录
    .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
    // 如果有环境专属配置文件,比如appsettings.Development.json,也可以加上
    .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json", optional: true)
    .Build();

步骤2:验证键名与读取方式

  • 检查appsettings.json里的自定义数据键名是否和代码中读取的一致,比如配置是:
    {
      "FolderName": "MyTargetFolder"
    }
    
    读取时要用configuration["FolderName"];更推荐用强类型绑定,避免字符串写错:
    public class AppSettings
    {
        public string FolderName { get; set; }
    }
    
    // 绑定到类
    var appSettings = configuration.Get<AppSettings>();
    // 此时appSettings.FolderName就能正确获取值
    

步骤3:确保配置文件可访问(可选)

如果没把工作目录设为WebApi根目录,想从测试输出目录读取的话,需要右键WebApi项目中的appsettings.json → 属性 → 设置复制到输出目录为如果较新则复制或始终复制,确保文件能被测试项目访问到。


内容的提问来源于stack exchange,提问作者cortisol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:44:17