43

我在 Windows Server 2008 上安装了 C# Windows 服务。我使用 InstallUtil 安装了它。该服务从 app.config 文件中读取一些数据,并且运行良好。你能告诉我安装服务后这个文件在哪里吗?我一直在寻找几个小时,但找不到它。

4

6 回答 6

63

您可以按照以下步骤验证已安装 Windows 服务的确切位置:

  1. 单击“管理工具”图标下的“服务”图标,调出 Windows 服务列表。您也可以通过在开始菜单下的搜索菜单中键入“查看本地服务”来获取此列表。

  2. 在已安装服务列表中选择您的 Windows 服务,右键单击,然后选择属性。您还可以双击代表服务的行。

  3. 在“属性”对话框中找到“可执行文件路径”值。该值将包括任何命令行参数。

  4. 打开服务可执行文件所在的文件夹。

如果 Windows 服务是用 .NET Framework 构建的,它的配置会保存在对应的 .config 文件中,即以“.config”为后缀的可执行文件的名称,例如,如果可执行文件的名称是“XyzService.config”。 exe”,则 .config 文件的名称将为“XyzService.exe.config”。

有几点需要注意:

  • 如果您在使用 Visual Studio 在同一台机器上构建服务后安装了该服务,那么 Visual Studio 将转换项目中的 App.config 文件并将其自动放置在构建输出文件夹中(并使用上述命名适当地重命名它惯例)。

  • 如果您的机器设置为在 Windows 资源管理器中隐藏文件扩展名,您将看到 2 个文件“XyzService”和“XyzService.exe”。在这种情况下,“XyzService.exe”是您的配置文件。如果您随后在 Windows 资源管理器中关闭隐藏文件扩展名的选项,您将开始看到“XyzService.exe”和“XyzService.exe.config”。

  • 如果您找不到相应的 .exe.config 文件,则服务中的代码可能会回退到默认值。在这种情况下,您可以在服务可执行文件旁边放置一个正确命名和格式化的配置文件,然后重新启动服务,一切都会好起来的。

于 2012-12-28T19:43:08.250 回答
4

根据微软

对于客户端可执行文件,应用程序配置文件与应用程序的可执行文件位于同一目录中,并且与带有 .config 扩展名的可执行文件具有相同的基本名称。

请注意,如果您的 exe 名为 appname.exe,并且您将 Windows 资源管理器设置为隐藏扩展名,那么您的应用程序将显示为 appname,而您的配置文件将显示为 appname.exe(即使真实名称是 appname.exe)。 exe.config)

正如其他人指出的那样,InstallUtil 不对配置文件做任何事情,它应该以与 exe 本身相同的方式复制到服务器。

于 2012-12-28T19:40:55.210 回答
3

它与您使用installutil工具注册服务的位置相同。

于 2012-12-28T19:20:42.870 回答
2

鉴于 App.config 是{ProjectName}.exe.configWindows 服务这一事实,它可能会被调用。检查该文件是否存在以及是否是您要查找的文件。

于 2012-12-28T19:26:43.053 回答
1

您的应用程序(Windows 服务)所在的位置相同。

检查一下,如果它不存在,请将其放在与服务相同的目录中。

于 2012-12-28T19:20:15.177 回答
0

如果您有一个实时环境(从您的问题来看,您似乎确实如此),您可以使用高级 Process Monitor 实用程序检查实际发生的情况。但通常 .config 文件位于 .exe 旁边,并且命名相同。

于 2012-12-28T19:27:11.273 回答