c# - 为什么我发布后我的服务器设置没有被读取?
问题描述
我正在尝试使用 dotnet core 3.1 创建 Windows 服务。当我从 Visual Studio 本地运行服务时,这些设置有效(即_serverAddress
显示localhost:5874
),但在我发布并运行 exe 之后无效。
我正在使用带有 DI 的选项模式...
private readonly Uri _serverAddress;
public Worker(ILogger<Worker> logger, IOptions<ServerSettings> serverSettings)
{
_serverAddress = serverSettings.Value.ServerAddress;
}
using (var client = new HttpClient())
{
var response = await client.GetAsync($"{_serverAddress}api/Importapi", stoppingToken);
response.EnsureSuccessStatusCode();
}
我无法理解的是为什么_serverAddress
当我通过 Visual Studio 运行时会填充,但在我发布后,_serverAddress
它是空的。我不确定在这两种情况下是否相关,服务器变量是相同的:localhost:5874
,因为我只是试图让服务在我的本地计算机上运行以与也在 localhost 上运行的 Web 应用程序对话在不同的端口下。
当我运行发布时,部署模式是“自包含”的,我在 x64 上运行,生成单个文件,ReadyToRun 编译...
那么可能是什么导致了这个问题,我该如何解决呢?
谢谢!
解决方案
看来这可能是 Visual Studio 的 bug,因为命令行版本没有这个问题。换句话说,如果我通过命令行发布:dotnet publish -r win-x64 -c Release /p:PublishSingleFile=true /p:PublishTrimmed=true
那么 appsettings.json 就会随之而来。
推荐阅读
- github - GitBucket 基于 SSH 的身份验证
- karate - 空手道 websocket 发送请求正文替换令牌失败
- ios - iOS - 在应用程序关闭的情况下在后台运行网络请求
- javascript - LexicalEnviroment 对象与 [[Enviroment]] 的关系
- r - 计算数据集中的一行与R中另一个数据集中的所有行之间的差异
- python - 如何在 Visual Studio Code 上使用 Python 设置 AWS SAM 本地调试?
- javascript - 我的 poll 命令在 discord.js v12 中不起作用
- mysql - 如何求和并在mysql的每一行中使用它
- bash - 使用 sed 将带双引号的 TXT 文件转换为管道分隔格式
- csv - 如何在颤动中从设备存储中读取 CSV 文件