2010-04-15 162 views
2

我正在尝试编写一个Windows服务。它安装正常,但运行时出现以下异常时失败。我搜索了字符串“MyNewProgramService”,但我找不到任何会导致此错误的转换。我还将try/catch块添加到具有自定义异常处理的一堆代码中,而无需查找发生此异常的位置。我想这是在自动生成的配置/设置代码中的某个地方。有任何想法吗?Windows服务在启动时失败

Event Type: Error 
Event Source: MyNewProgram Event 
Category: None Event 
ID: 0 
Date:  4/15/2010 
Time:  12:48:34 PM 
User:  N/A 
Computer: 20F7KF1 
Description: Service cannot be started. System.InvalidCastException: 
Conversion from string "MyNewProgramService" to type 'Integer' is not valid. ---> 
System.FormatException: Input string was not in a correct format.  
at Microsoft.VisualBasic.CompilerServices.Conversions.ParseDouble(String Value, 
    NumberFormatInfo NumberFormat) 
at Microsoft.VisualBasic.CompilerServices.Conversions.ToInteger(String Value)  
    --- End of inner exception stack trace --- 
at Microsoft.VisualBasic.CompilerServices.Conversions.ToInteger(String Value) 
at TaskManagerFailureHandlerService.MyNewProgramService.OnStart(String[] args) 
at System.ServiceProcess.ServiceBase.ServiceQueuedMainCallback(Object state) 
+0

顺便说一句 - 我在VS2010上工作。 – Jeff 2010-04-15 17:12:41

回答

3

它属于方法MyNewProgramService.OnStart,有Conversions.ToInteger被称为某处。只需在方法中搜索它。然后检查参数。它可能来自配置或其他东西,这就是为什么你看不到文本中的字符串。

+0

非常感谢。我在OnStart方法中的异常处理程序中调用了一个参数。 (一个掩盖另一个的错误,我很痛苦!)感谢您让我走上正轨! – Jeff 2010-04-15 17:29:28

0

检查您的配置文件。

您也可以检查服务运行的帐户。正如测试转到服务列表中的登录选项卡并让它在您自己的帐户下登录一样。如果问题消失,这是一个权限问题。