可以';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]" />
以下是我的问题的解决方案:
-
为了修复并排错误,我将清单选项设置为"创建没有清单的应用程序",而不是"使用默认设置嵌入清单"。
-
为了修复配置文件中的无效字符,我将
&
修改为&
。这使得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" />
尽管我看不出会生成您所看到的解析错误。