【问题标题】:Worker Service looking for appsettings.json in System32 folder instead of local folderWorker Service 在 System32 文件夹而不是本地文件夹中寻找 appsettings.json
【发布时间】:2020-03-29 01:42:06
【问题描述】:

我有一个 .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);

如何让服务查看本地文件夹?

【问题讨论】:

    标签: asp.net-core .net-core windows-services appsettings worker-process


    【解决方案1】:

    这是因为当前目录在运行时更改为C:\Windows\System32。您可以通过Assembly.GetExecutingAssembly() 获得相对路径。例如:

    var configBuilder = new ConfigurationBuilder()
        .SetBasePath( Path.GetDirectoryName( Assembly.GetExecutingAssembly().Location))
        .AddJsonFile("appsettings.json");
    var configuration = configBuilder.Build();
    

    【讨论】:

    • 我试过这个。得到错误描述:由于未处理的异常,进程被终止。异常信息:System.IO.DirectoryNotFoundException:C:\Services\MyAssemblyName.dll\
    • @Ajith 你像我上面那样使用Path.GetDirectoryName( ) 吗?或使用与我完全相同的代码?我测试我上面的代码。它对我来说很好。
    • @itminus 我使用的代码与您的代码相同。但是在 EventViewer 上仍然出现相同的错误。您知道此问题的其他可能原因吗?
    • @ShaileeShah 使用了上面 itminus 建议的解决方案。它正在使用 Assembly.GetExecutingAssembly().Location
    • 它对我也不起作用,但在事件日志中指出程序集从 'C:\WINDOWS\TEMP\.net\<AssemblyName>\<weirdalphanum> 运行。这与 MS 文档中的内容背道而驰。
    【解决方案2】:

    我已经成功使用了Host ASP.NET Core in a Windows Service中的文档

    简而言之,您只需在配置生成器步骤中添加.UseWindowsService(),如下所示:

    Host.CreateDefaultBuilder(args)
        .UseWindowsService()
        .ConfigureAppConfiguration((hostContext, configuration) => 
            {
                //...set your configurations here
            })
            .ConfigureServices((hostContext, services) =>
            {
                //...configure you services here
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-30
      • 2012-02-23
      • 1970-01-01
      • 1970-01-01
      • 2013-10-20
      • 1970-01-01
      • 2019-07-17
      • 2023-03-16
      相关资源
      最近更新 更多