无法读取 dotnet core 中链接的 appsettings.json 文件中的值

2023-12-06

在一个 aspnetcore 2.0 项目中,我尝试在我的 Web 应用程序和几个 xunit 测试项目中设置一个共享的 appsettings.json 文件。

首先,当我“定期”将 appsettings.json 单独添加到我的项目中时,一切正常。但是,当我尝试添加单个参考/链接如果来自不同路径的文件,则在运行时不会读取这些值。

为了进行设置,我将每个项目的链接文件添加到 .csproj:

<ItemGroup>
    <Content Include="..\Shared\appsettings.json">
        <Link>appsettings.json</Link>
        <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
</ItemGroup>

在每个构建中,我可以验证它是否很好地输出到/bin/Debug/netcoreapp2.0目录:

Screenshot of output directory

问题是,当读取它时,无论是通过我的 webapi 的默认启动还是在测试中,设置值始终为空。我正在使用强类型配置。在 webapi 项目中,我使用的是WebHost.CreateDefaultBuilder()与 aspnetcore 2.0 约定(在幕后查看hostingEnvironment.EnvironmentName,dotPeek 告诉我)。

但在测试项目中,也会发生同样的情况。这一切都可以通过我的全局测试装置中的以下示例来解释:

var builder = new ConfigurationBuilder()
    // .SetBasePath(???)
    .AddJsonFile("appsettings.json");

var configuration = builder.Build();

var settings = new FooSettings();
configuration.GetSection("FooSettings").Bind(settings);

if (settings == null) throw new Exception("Could not find or parse 'appsettings.json'");

// The problem: always fails on this check
if (string.IsNullOrEmpty(settings.Bar)) throw new Exception("Could not find or parse 'FooSettings'");

该问题已在上述示例的最后一行进行了注释。同样,当我直接将 appsettings.json 文件添加到项目根目录,而不是将其添加为共享文件夹的链接引用时,它效果非常好。我假设我必须以不同的方式更改 .csproj 配置或使用不同的.SetBasePath(???)。但对于两者,我都在努力解决如何实现这一目标。

问题:我可以做什么来使linkedappsettings 文件可以在我的所有项目中正确读取吗?

注意:我找到了其他几篇文章,但找不到任何匹配的答案,特别是针对 dotnetcore。


在我添加一些代码后它开始工作Program(感谢@mr_squall 的指导..):

     public static void Main(string[] args)
        {
            CreateHostBuilder(args)
#if !DEBUG
                .UseContentRoot(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location))
#endif
                .Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureAppConfiguration((hostingContext, config) =>
                {
                    config.SetBasePath(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
                })
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法读取 dotnet core 中链接的 appsettings.json 文件中的值 的相关文章

  • Windows 上使用 g++ 的 Makefile,链接库

    我已经厌倦了 MSVC 6 以及每个人总是告诉我它是一个蹩脚的编译器等等 所以现在我决定尝试使用 vim 加 g 和 makefile 这是我的问题 我有以下 makefile This is supposed to be a commen
  • 扫描文本文件时如何跳过行?

    我想扫描一个文件并在阅读之前跳过一行文本 我试过 fscanf pointer n struct test i j 但这个语法只是从第一行开始 我可以使用 scanf 使用以下指令跳过行 fscanf config file n n 格式字
  • 更快的算法来计算有多少数字可以被范围内的特定整数整除

    int a b c d 0 cin gt gt a gt gt b gt gt c for int i a i lt b i if i c 0 d cout lt
  • 必须打开存储才能执行此操作 - System.IO.Packaging.Package

    我正在使用 System IO Packaing Package 类来压缩文件 我的应用程序的多个实例可以同时运行 并读取和保存文件 当处理小文件时 一切似乎都很好 但是当涉及大文件时 如果应用程序的两个实例同时保存 我会收到一个异常 消息
  • C修改printf()输出到文件

    有没有办法修改printf为了将字符串输出到文件而不是控制台 我尝试在互联网上查找一些内容 发现了类似的电话dup dup2 and fflush这可能与此有关 EDIT 也许我不清楚 问题是这是C考试问题 问题如下 解释一个通常将字符串输
  • 没有 Unicode 字节顺序标记。无法切换到 Unicode

    我正在使用 XSD 编写 XML 验证器 下面是我所做的 但是当验证器到达该线时while list Read 它给了我错误 没有 Unicode 字节顺序标记 无法切换到 Unicode 有人可以帮我解决吗 public class Va
  • F10键没被抓住

    I have a Windows Form and there overriden ProcessCmdKey However this works with all of the F Keys except for F10 I am tr
  • C 中的模仿函数重写

    具体来说 函数重写能够调用基本重写方法 这有两部分 一个是预编译的库代码 1 另一个是库的用户代码 2 我在这里实现了一个尽可能最小的经典 Person 和 Employee 示例 非常感谢了解 OOP 概念的铁杆 C 开发人员的回应 我正
  • 指示泛型返回动态类型的对象

    这个问题是我原来问题的后续问题here https stackoverflow com questions 2541184 using a type object to create a generic 假设我有以下泛型类 简化 class
  • Microsoft.Graph - 如何从具有不同用户名的共享邮箱发送?

    我目前正在将使用 SMTP 的服务代码移植到 Office 365 通过 SMTP 我可以使用 发件人 字段在来自共享收件箱的邮件上设置不同的用户名 同时保留共享电子邮箱地址 这似乎无法通过 Office 365 运行 其工艺流程为 客户填
  • 在“using”语句中使用各种类型 (C#)

    自从C usingstatements只是try finally dispose 的语法糖 为什么它接受多个对象仅当它们属于同一类型时 我不明白 因为它们需要的只是 IDisposable 如果它们都实现 IDisposable 应该没问题
  • c# 如何生成锦标赛括号 HTML 表

    所以我已经被这个问题困扰了三个星期 但我一生都无法弄清楚 我想做的是使用表格获得这种输出 演示 http www esl world net masters season6 hanover sc2 playoffs rankings htt
  • 如何将字符串转换为 Indian Money 格式?

    我正在尝试将字符串转换为印度货币格式 例如如果输入为 1234567 则输出应为 12 34 567 我编写了以下代码 但它没有给出预期的输出 CultureInfo hindi new CultureInfo hi IN string t
  • `cosf`、`sinf` 等不在 `std` 中 [重复]

    这个问题在这里已经有答案了 根据这里的讨论 我有报告了一个错误 https bugs launchpad net ubuntu source gcc 8 bug 1831385给 Ubuntu 开发者 编译以下示例 C 程序时 includ
  • Dynamics Crm:获取状态代码/状态代码映射的元数据

    在 Dynamics CRM 2011 中 在事件实体上 状态原因 选项集 也称为状态代码 与 状态 选项集 也称为状态代码 相关 例如看这个截图 当我使用 API 检索状态原因选项集时 如下所示 RetrieveAttributeRequ
  • 展开路径中具有环境变量的文件名

    最好的扩张方式是什么 MyPath filename txt to home user filename txt or MyPath filename txt to c Documents and settings user filenam
  • 为什么C语言中可以使用多个分号?

    在 C 中我可以执行以下操作 int main printf HELLO WORLD 它有效 这是为什么 我个人的想法 分号是一个 NO OPERATION 来自维基百科 指示符 拥有一大串分号与拥有一个分号并告诉 C 语句已结束具有相同的
  • 将一个 long 转换为两个 int 以进行重构

    我需要将一个参数作为两个 int 参数传递给 Telerik Report 因为它不能接受长参数 将 long 拆分为两个 int 并在不丢失数据的情况下重建它的最简单方法是什么 使用掩蔽和移位是最好的选择 根据文档 long 保证为 64
  • 如何使用 ASP.NET Web 表单从代码隐藏中访问更新面板内的文本框、标签

    我在更新面板中定义了一些控件 它们绑定到中继器控件 我需要根据匿名字段隐藏和显示用户名和国家 地区 但问题是我无法以编程方式访问更新面板中定义的控件 我如何访问这些控件 我也在网上查找但找不到很多参考资料 下面是来自aspx页面和 cs页面
  • 在何处将 CFLAG(例如 -std=gnu99)添加到 (Eclipse CDT) 自动工具项目中

    我有一个简单的 Autotools C 项目 不是 C 其框架是由 Eclipse CDT Juno 为我创建的 CFLAG 通过检查 似乎是 g O2 我希望所有生成的 make 文件也具有 std gnu99附加到 CFLAG 因为我使

随机推荐

  • 计算 MySQL 数据库中时间戳在 X 间隔内的行数

    我正在尝试计算数据库表中 X 小时或 X 天内插入的行数 我已经多次尝试 但我不断收到空集响应 我的表中的 start stamp 列的格式如下 2013 08 07 18 18 37 我尝试过很多变体 select from mytabl
  • Bitly 的 Nuget 包以缩短链接

    我需要在 C 中使用 bitly 来缩短链接 有没有这个的 nuget 包 有人可以为我提供代码以便我可以使用它吗 查看https www nuget org packages BitlyAPI 或者您自己调用 bit ly api 该 A
  • ijg 支持 JPEG - 出现访问冲突

    我最近正在尝试更新my game以压缩格式 JPEG 和 PNG 存储图形 虽然我最终选择了另一个图书馆 但我最初的尝试是合并ijg进行JPEG解压缩 然而 我什至无法让最简单的控制台应用程序工作 并且想知道是否有人能够阐明其原因 这是我的
  • 使用 MediaRecorder 在 Android 中录制语音通话

    我在通话录音时遇到问题 我已拨打服务并致电BroadcastReceiver获取通话状态 在TelephonyManager EXTRA STATE OFFHOOK当接到电话时 我正在使用以下代码来记录通话 recorder setAudi
  • 带有子标题的动态表头

    当标题单元格应该有一些不等于标题单元格的子标题单元格时 如何创建 使用角度 动态表标题 我的桌子是 var table header a subheaders a1 a2 header b subheaders b1 b2 b3 我尝试创建
  • 如何防止有人劫持rtmp流源而不限制一个IP

    长期倾听者 第一次来电 我想知道是否有一种方法可以防止有人劫持我们的 rtmp 流 而不将传入源限制为特定的 IP 地址 这就是我们目前正在做的 原因是我们的 ISP 可能会随时更改我们的源 IP 除非我们为静态 IP 支付更多费用 如果没
  • 如何获取列表项 Javascript 的值/文本

    我怎样才能获得a的值 文本 li 物品 我在互联网上找到了很多获取下拉列表值的方法 但不是为了一个 li li item 这是我到目前为止所尝试过的 var listt document getElementById content1 va
  • EPP 呼叫上的客户端证书

    我正在尝试在curl 调用中使用cacert org 提供的免费客户端证书 检查以下 ch curl init curl setopt ch CURLOPT URL https url com curl setopt ch CURLOPT
  • 将不同存储库的一个 Jenkinsfile 调用到另一个 jenkinsfile

    我有一个如下所示的 Jenkinsfile A 在这个文件中 我需要在执行所有阶段后调用另一个 Jenkinsfile B Jenkinsfile A groovy pipeline agent label triggers pollSCM
  • Bootstrap 4:为什么可滚动下拉列表中的弹出框不显示?

    我希望它像 Bootstrap 3 一样工作 当我在悬停弹出窗口上有一个带有滚动条的下拉菜单时 我认为 Bootstrap 4 有问题 我需要溢出 隐藏 使下拉菜单滚动 但弹出窗口也被隐藏 我尝试使用container body 但没有成功
  • SCSS 地图无法在 Compass 中编译[重复]

    这个问题在这里已经有答案了 我写了一个 SCSS 映射变量和一个 each循环为文件下载链接分配不同的图标 如下所示 file icons application vnd ms excel images ico excel png appl
  • 无法读取未定义 vue 的属性“post”

    感谢您阅读我的问题 我已阅读有关我的问题的信息 VUE JS 2 WEBPACK 无法读取未定义 VUE 资源的属性 get 但我的系统没有读取 Vue var 我有一个 vue 组件调用 app vue 我需要使用 vue resourc
  • 如何获取大 LinkedIn 图片共享格式

    我正在使用 linkedin api 在 linkedin 上分享帖子 如下所示 How to get make post like this through api 我正在尝试帖子正文的所有组合 但无法发布如上所述的内容 comment
  • 在 Ionic 4 应用程序中进行的 API 调用无法在 Android 设备上运行

    我可以使用以下命令在笔记本电脑上运行我的离子应用程序ionic lab命令 该应用程序调用 IMDB api 并显示从中检索到的数据 现在 我正在尝试在 Android 设备上运行该应用程序 使用以下命令 ionic cordova run
  • macOS Mojave 版本 10.14.1 bash-3.2 expr:语法错误

    我遇到这样的错误 expr syntax error 我的脚本是 bin bash echo expr index sarasara a 如何修复它 man expr最后给出这个 根据 POSIX 标准 使用字符串参数length subs
  • 我可以使用 allocate 来复制对象的对象吗?

    我有一个从 TPersistent 三级继承的对象 我想使用Assign程序 MyFirstObj GrandSonOfPersistent Create I modify the objects inside MyFirstObj MyS
  • 如何使用GridBagConstraints创建布局?

    我想像这样布局我的 JPane 这样 顶部部分比底部部分更大 更高 顶部部分由另一个 JPanel 组成 并使用 Graphics 对象来显示图像 而底部部分也由另一个 JPanel 组成 但使用 Graphics 对象来绘制一些线条和文字
  • sqlite是否缓存查询结果以进行优化?

    我在 sqlite 中注意到了这种行为 当我重新使用游标对象时 任务管理器中的工作集内存不断增加 直到我的程序抛出内存不足异常 我重构了代码 以便每次查询时我都会打开一个到 sqlite 文件的连接 查询我想要的内容 然后关闭连接 后者似乎
  • 如何从 Wix 安装程序将自签名 SSL 证书安装到商店中?

    我找不到任何有关如何针对当前版本的 Wix Toolset 3 11 1 2318 执行此操作的文档 鉴于我有一个cert cer文件在我的SourceDir and INSTALLDIR如何在安装时将其放入 Windows 受信任的根证书
  • 无法读取 dotnet core 中链接的 appsettings.json 文件中的值

    在一个 aspnetcore 2 0 项目中 我尝试在我的 Web 应用程序和几个 xunit 测试项目中设置一个共享的 appsettings json 文件 首先 当我 定期 将 appsettings json 单独添加到我的项目中时