我有一个C#服务,在我的笔记本电脑上运行没有任何问题(Windows 7)。我一直在Windows Server 2003上安装它,我收到以下错误。首先,在服务窗口中单击开始后,我得到:
无法在本地计算机上启动MyService服务。错误14001:这 应用程序无法启动,因为应用程序配置 是不正确的。重新安装应用程序可能会解决此问题。
在事件查看器中,我收到以下两个错误:
来源:SideBySide EventID:58
清单或策略文件“C:\ Program”中的语法错误 文件\ HP \ MyService \ MyService.exe.Config“在第9行。
来源:SideBySide EventID:59
为C:\ Program生成激活上下文失败 FILES \ HP \为MyService \ MyService.exe。参考错误消息:清单 解析错误:内部错误。
我的.NET应用程序具有.NET Framework 4 Client Profile的目标框架。笔记本电脑和服务器都有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,并在项目属性的Application选项卡中的资源中进行了修改,并且我已将manifest选项放入“Create a application with without a manifest”而不是“Embed manifest with default settings”
该服务现在启动,但我收到有关配置文件中无效字符的错误。我添加了这个值,它会生成一个错误,说其中一个字符对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]" />
答案 0 :(得分:3)
以下是我的问题的解决方案:
要修复Side-By-Side错误,我将清单选项设置为“创建没有清单的应用程序”而不是“使用默认设置嵌入清单”。
要修复配置文件中的无效字符,我修改了&
&
。这使得Configuration Manager类可以对XML进行有效和可解析。
答案 1 :(得分:1)
<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" />
虽然我看不到你生成的解析错误。