在将ASP.net webservice部署到我的生产服务器之后,我遇到了以下异常:
system.missingMethodException而
找不到方法:'Boolean System.Threading.WaitHandle.WaitOne(Int32)'
MSDN 文档说明:
版本信息.NET Framework受以下版本支持:3.5 SP1,3.0 SP2,2.0 SP2
所以这个错误的原因是我的服务器没有更新到最新的Service Pack.
问题是:
为什么代码开始?IMO如果目标框架版本不同,应用程序根本不应该启动.
如何确保我的代码可以在JIT之前在目标机器框架版本上运行?
这太疯狂了.我认为微软应该更认真地对待版本问题.
虽然方法:
Boolean System.Threading.WaitHandle.WaitOne(Int32)
方法不存在:
Boolean System.Threading.WaitHandle.WaitOne(Int32, bool)
确实存在.
用反射器看 - 用布尔值作为WaitOne(Int32)
调用.所以简单地使用第二个签名,提供布尔值,你应该没问题.WaitOne(Int32,bool)
false
false
我同意.问题是程序集版本号没有改变.
转换到.NET 3.5 SP1时,我通过确保构建服务器没有安装SP(即构建服务器框架版本与目标机器框架版本匹配),确保开发人员不使用特定于SP1的API.然后,一旦我们准备好,SP1就会安装在构建服务器上.类似的方法可以让你免于痛苦.