Windows服务安装后自动停止

1,现象
我做了一个windows服务,为了以后部署方便,将其中容易发生变动的流程,做成了一个DLL插件A,然后在windows服务启动的时候启动加载。编程环境是在Windows2003服务器系统上,然后部署的系统是Windows 2008 R2。我的服务启动5秒钟后就自动停止了,并且try...catch不到任何异常。

2,资料,以下来自微软技术资源库 http://technet.microsoft.com/zh-cn/library/k7137bfe

关于异常的疑难解答:System.BadImageFormatException

,当 DLL 或可执行程序的文件映像无效时, BadImageFormatException 引发异常。

如果您的应用程序使用了 32 位组件,请确保该应用程序始终采用 32 位应用程序的运行方式。

如果应用程序项目的“平台目标”属性设置为 AnyCPU,则编译后的应用程序在 64 位或 32 位模式中均可运行。 如果采用 64 位应用程序运行方式,则实时 (JIT) 编译器便会生成 64 位本机代码。 如果应用程序依赖于某个 32 位托管组件或非托管组件,则在 64 位模式中无法加载该组件。 若要纠正此问题,请将项目的“平台目标”属性设置为 x86,然后重新编译。

确保未使用利用其他 .NET Framework 版本创建的组件。

如果使用 .NET Framework 1.0 或 .NET Framework 1.1 开发的应用程序或组件尝试加载使用 .NET Framework 2.0 SP1 或更高版本开发的程序集,或者使用 .NET Framework 2.0 SP1 或 .NET Framework 3.5 开发的应用程序尝试加载使用 .NET Framework 4 开发的程序集,便会引发此异常。BadImageFormatException 异常可能会报告作为编译时错误,或在运行时可能会引发该异常。 有关示例,请参见 BadImageFormatException 类。

确保文件映像是有效的托管程序集或模块。

当非托管动态链接库或可执行文件传递给 Load 方法进行加载时会引发此异常。

有关更多信息,Visual Basic 用户可以参见互操作性疑难解答 (Visual Basic)

 

3,解答
由于插件A应用程序项目的“目标平台”属性设置为 AnyCPU,在x64位模式中无法加载该组件,所以我将插件A应用程序项目的“目标平台”设置为“x86”,然后停止服务,将重新生成的插件A放到服务安装目录下,重新启动程序,OK!

这里改正一下,刚才我在上面写的是X64,日志里记录“试图加载格式不正确的程序”!

 

 

转载于:https://www.cnblogs.com/cpcpc/archive/2012/10/25/2738589.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值