在哪里存储可以作为控制台应用程序或服务运行的应用程序的配置文件

时间:2018-07-11 12:53:31

标签: c# windows windows-services windows-server

当前,我的应用程序是C#控制台应用程序,但是现在我收到了使其能够在Windows服务器上作为服务运行的请求。

我已经根据以下示例编辑了代码:.NET console application as Windows service,但是我在配置和日志文件方面很挣扎。

当前,我存储了3个文件,这些文件要求我的应用程序在Environment.SpecialFolder.ApplicationData + @"\MyApplication\"下运行,但是我想如果要将它作为服务或作为控制台应用程序在同一台计算机上运行,​​这将不适合(一次一个或另一个)并访问相同的配置文件。

我将这些文件存储在哪里?

其他信息:将执行CLI的用户具有管理员权限。

2 个答案:

答案 0 :(得分:1)

Environment.SpecialFolder.ApplicationData将在运行应用程序的路径中包含用户名。

控制台应用程序将以管理员(或任何其他身份)身份运行,服务将以SYSTEM用户身份运行。因此,路径将有所不同。

更好的选择是应用程序路径。您可以按以下方式获取适用于控制台和服务的应用程序路径:

private static string GetApplicationPath()
{
    string assemblyPath = Assembly.GetEntryAssembly().CodeBase;
    assemblyPath = new Uri(assemblyPath).LocalPath;
    assemblyPath = Path.GetDirectoryName(assemblyPath);
    return assemblyPath;
}

答案 1 :(得分:0)

我们正在Windows服务中使用app.config文件。

如果您的配置变量只是键值对,则可以使用app.config并使用

进行访问
var yourParameterConfigValue = ConfigurationManager.AppSettings["parameterName"]

或仅创建一个configuration.json文件和适当的c#类,使用

反序列化内容
//read configuration.json
var yourConfigObject = JsonConvert.DeserializeObject<MyConfig>(yourConfigString);