Asp.net-Core
Worker Service 在 System32 文件夾而不是本地文件夾中尋找 appsettings.json
我有一個 .Net 核心工作者服務,我作為 Windows 服務執行。該服務使用 appsettings.json 文件獲取配置資訊。使用
SC CREATE命令安裝服務後,服務失敗。在事件查看器中,我發現了找不到文件的錯誤
C:\Windows\System32\appsettings.json。我的服務文件放置在不同的文件夾c:\Services\中,而不是查看該位置,該服務正在尋找 System32 文件夾中的文件。配置註冊如下。
var configBuilder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json"); var configuration = configBuilder.Build(); services.AddSingleton(configuration);如何使服務查看本地文件夾?
那是因為目前目錄
C:\Windows\System32在執行時更改為。你可以得到一個相對路徑Assembly.GetExecutingAssembly()。例如:var configBuilder = new ConfigurationBuilder() .SetBasePath( Path.GetDirectoryName( Assembly.GetExecutingAssembly().Location)) .AddJsonFile("appsettings.json"); var configuration = configBuilder.Build();
我已經在 Windows 服務中成功使用了Host ASP.NET Core 中的文件
簡而言之,您應該只添加
.UseWindowsService()配置建構器步驟,如下所示:Host.CreateDefaultBuilder(args) .UseWindowsService() .ConfigureAppConfiguration((hostContext, configuration) => { //...set your configurations here }) .ConfigureServices((hostContext, services) => { //...configure you services here }