gpt4 book ai didi

azure - .NET Core 2 Service Fabric 控制台应用程序通用配置文件

转载 作者:行者123 更新时间:2023-12-03 04:13:12 24 4
gpt4 key购买 nike

我正在尝试构建一堆用 .NET Core 2.1 编写的有状态微服务。这些不是 ASP.NET 应用程序,没有 http 接口(interface),而是设计为从服务总线消费消息的控制台应用程序。

我花了很长时间试图弄清楚如何将我的 appsettings.json 文件引用到服务包中。有很多与在 ASP.NET Service Fabric 应用程序中使用 appsettings.json 文件相关的文章(基本上是在 WebHost 构建器中将其拼写出来),但这不适用于我,因为我没有使用 ASP.NET。

我有一个 appsettings.json 文件,该应用程序中的所有微服务都应该能够使用该文件。

我还找到了这篇文章Service Fabric include additional files其中讨论了将其放入 MSBuild 的 sfproj 目标中,但似乎没有任何有关目标端文件结构的信息。

我尝试做的是将目标添加到我的 sfproj 文件中,如下所示:

<Target Name="AfterPackage" AfterTargets="Package">
<Copy SourceFiles="appsettings.json" DestinationFolder="$(PackageLocation)\appsettings.json" />
</Target>

然后在我的服务中,我尝试根据 ..\appsettings.json 实例化一个 IConfiguration 对象,但正如人们现在可能猜到的那样,该服务在尝试发布时,会抛出 FileNotFoundException 来查找 appsettings.json 文件,因此显然该文件位于相对于微服务的不同位置。 (当然,发布失败只是表明存在问题并回滚,您必须深入研究 SF Explorer 才能真正看到该消息)

这个配置应该是什么样的?我找不到任何描述有状态微服务的文件系统是什么样子的文档,我不清楚应该把这个通用文件放在哪里,或者服务应该如何访问该文件。一些帮助将不胜感激。

最佳答案

我希望一切都正确。

步骤如下:

  1. 输入appsettings.json进入 *.sfproj 中的共享文件夹并使用 Visual Studio 将其包含在项目中。
  2. 卸载*.sfproj并开始将其编辑为 .xml
  3. 在最后一个 <Target> 之后添加以下代码元素。
<Target Name="AfterPackage" AfterTargets="Package">
<Copy SourceFiles="appsettings.json"
DestinationFolder="$(PackageLocation)\%(_DeployableServiceProjectReference.ServiceManifestName)\%(_DeployableServiceProjectReference.CodePackageName)" />
</Target>

_DeployableServiceProjectReference是内部<ItemGroup>由之前的目标初始化。

这些应该强制 package 命令复制 appsettings.json*.sfproj 中每个服务引用的文件复制到服务的代码包目录中.

希望这有帮助。

关于azure - .NET Core 2 Service Fabric 控制台应用程序通用配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55341372/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com