无法在另一台机器上启动服务

时间:2012-01-09 22:02:44

标签: c# .net visual-c++ windows-services

我有一个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 \为M​​yService \ 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]" />

2 个答案:

答案 0 :(得分:3)

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

  1. 要修复Side-By-Side错误,我将清单选项设置为“创建没有清单的应用程序”而不是“使用默认设置嵌入清单”。

  2. 要修复配置文件中的无效字符,我修改了& &amp;。这使得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" />

虽然我看不到你生成的解析错误。