因此,我构建了 .NET 8 Windows 服务,并在部署之前使用了“发布”选项 为我的本地服务 - 使用
Single File
“独立” 选项。然后,我将该文件夹复制到我们的一台服务器进行部署。
在PowerShell中如下:
sc.exe create "Mqtt Service" binpath="C:\dev\projects\..\NotificationServiceCore\bin\Release\net8.0-windows\publish\MyServiceCore.exe"
但在我的代码中,我需要获取已部署服务的路径 - 而不是 Windows 临时文件夹。
例如,这不会给我 -
System.AppContext.BaseDirectory;
- 它会返回 c:\windows\temp\.net\..
但是我在尝试加载我的证书文件时发现了异常:
2024-06-14 12:59:35 (null) [5] ERROR Certificate Exception in WsSecureClientOptions(). Check app config settings. The system cannot find the file specified.
2024-06-14 12:59:35 (null) [5] DEBUG Path to Certificate File - C:\Windows\TEMP\.net\NotificationServiceCore\pxsSvFJpErHm9e18vOpihtHD3i7O1g4=\certificate2024.pfx
为什么文件异常?这是因为我们没有在项目构建中包含该certificate.pjx。我们有一个
post-build
事件,将该文件复制到 $(OutDir)
cd $(ProjectDir)
xcopy "..\certificate\*.*" "$(OutDir)" /F /Y
这里的问题是 pfx 证书文件不在“c:\Windows\Temp.net...”文件夹中。
这就是我在代码中解析基本目录的方式:
string appBaseDir = System.AppContext.BaseDirectory;