服务器重启后,我有时会得到随机的CompilationException错误:
CompilationException: CS0006: Metadata file `/tmp/apache-temp-aspnet-0/ca373c84/assembly/shadow/10cad1cb/02cb7ade_1201ab15_00000001/ZedGraph.dll' could not be found -> HttpException: Single file build failed
您无法访问该应用程序。如果我再次重新启动服务器,则问题就会消失。
触发错误的文件可以是我自己的dll之一,也可以是依赖项,例如mysql.dll。
我在Linode VPS上使用mono 2.10.2,CentOS 5.7版(Final),Apache和mod_mono。
知道可能是什么原因?
编辑:由于我的故障开始时我搬到了Linode并且他们使用了XEN,我找到了选项--with-xen_opt = yes看起来很有意义: http://mono-project.com/Advanced_Mono_Compile_Options
答案 0 :(得分:2)
听起来像是一个带有阴影复制和编译的错误(竞争条件?)。之前已经找到并修复了其他人......请参阅http://grendello.blogspot.com/2007/08/new-modmono-and-xsp-developments.html
这是2006年http://lists.ximian.com/pipermail/mono-list/2006-March/030970.html
中类似问题的报告您可以尝试重新启动Apache,而不是重新启动系统。注意,我发现它可以帮助阻止apache然后启动,而不是重启。
您还可以启用mod_mono控制面板并从那里重新启动应用程序。在apache config中添加它。
<Location /monocp>
SetHandler mono-ctrl
Order deny,allow
Deny from all
Allow from 127.0.0.1 <YOURIP>
</Location>
要自动执行此过程,请查看Monit。
答案 1 :(得分:0)
似乎是由XEN虚拟化和单声道预编译二进制文件引起的问题。我使用选项--with-xen_opt = yes编译了mono,但是我无法编译XSP,所以我无法测试是否能够确保解决它但是我将完全相同的应用程序移动到专用服务器并且在200万次请求后,我没有遇到任何错误。
更新:查看Mahmoud回答
答案 2 :(得分:0)
FWIW,我在没有虚拟化的专用服务器上遇到了完全相同的问题(8核i7,x86 Ubuntu服务器版),所以我不认为这是Xen引发的问题。对于OP(SCL)或其他任何有此问题的人,我已在另一篇SO帖子here中记录了我的工作,并向Mono / Xamarin提交了错误报告。
这似乎是竞争条件,但与虚拟化无关。