问题描述
我正在尝试使用dotnet core 3.1创建Windows服务。当我从Visual Studio在本地运行服务时,设置起作用(即_serverAddress
显示localhost:5874
),但是在发布并运行exe之后却无法运行。
我正在使用带有DI的Options模式...
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();
}
我不明白的是为什么在通过Visual Studio运行时填充_serverAddress
的原因,但是发布后_serverAddress
为空。我不确定这两种情况下的服务器变量是否相同:localhost:5874
,因为我只是想让该服务在本地计算机上运行以与Web应用程序对话,这是否有意义?也可以在本地主机上的其他端口上运行。
当我运行发布时,部署模式为“自包含”,我在x64上运行,生成一个文件,即ReadyToRun编译...
那么什么可能导致此问题以及如何解决?
谢谢!
解决方法
这似乎是Visual Studio错误,因为命令行版本没有此问题。换句话说,如果我通过以下命令行发布:dotnet publish -r win-x64 -c Release /p:PublishSingleFile=true /p:PublishTrimmed=true
,那么appsettings.json就会随之出现。