可以';t在另一台机器上启动服务

本文关键字:一台 机器 服务 启动 可以 | 更新日期: 2023-09-27 18:19:55

我有一个C#服务,它在我的笔记本电脑(Windows 7)上运行时没有任何问题。一旦我在Windows Server 2003上安装它,我就会出现以下错误。首先,在服务窗口中点击开始后,我得到:

无法在本地计算机上启动MyService服务。错误14001:此由于应用程序配置,应用程序无法启动不正确。重新安装应用程序可以解决此问题。

在事件查看器中,我得到以下两个错误:

来源:SideBySide事件ID:58

清单或策略文件"C:''Program"中出现语法错误Files''HP''MyService''MyService.exe.Config"。

来源:SideBySide事件ID:59

为C:''Program生成激活上下文失败Files''HP''MyService''MyService.exe。参考错误消息:清单分析错误:内部错误。

我的.NET应用程序具有.NET framework 4客户端配置文件的目标框架。笔记本电脑和服务器都安装了VCredist 05、08和2010,并且都安装了.NET 4、3.5 3、2和1.1。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <!-- Make sure to add ' and end of path -->
    <add key="xmlDistantFolder" value="''127.0.0.1'epgdata'" />
    <add key="xmlLocalFolder" value="c:''folder'" />
    <add key="runTargetExec" value="disabled" />
    <add key="targetExe" value="c:''Windows'explorer.exe" />
   </appSettings>
</configuration>

此外,如果我删除了我的app.config文件(实际上称为MyService.exe.config),该服务可以工作,但它无法读取其中的基本配置数据,因此使其变得毫无用处。

我将目标框架修改为.NET 3.5,并在项目属性的"应用程序"选项卡中的资源中,将清单选项设置为"创建没有清单的应用程序",而不是"使用默认设置嵌入清单"。

服务现在启动了,但我在配置文件中收到一个关于无效字符的错误。我添加了这个值,它会生成一个错误,说其中一个字符对XML无效。有线索吗?

<add key="url" value="http://127.0.0.1/node/exec?path=c:''''Program Files''''myApp''''&exec=myExecutable.exe&flags=[%22/nouser%22,%22/console%22]" />

可以';t在另一台机器上启动服务

以下是我的问题的解决方案:

  1. 为了修复并排错误,我将清单选项设置为"创建没有清单的应用程序",而不是"使用默认设置嵌入清单"。

  2. 为了修复配置文件中的无效字符,我将&修改为&amp;。这使得XML有效并且可由Configuration Manager类解析。

<add key="xmlLocalFolder" value="c:''folder'" />
<add key="targetExe" value="c:''Windows'explorer.exe" />

应该是

<add key="xmlLocalFolder" value="c:'folder'" />
<add key="targetExe" value="c:'Windows'explorer.exe" />

尽管我看不出会生成您所看到的解析错误。