2

服务器重新启动后,我有时会收到如下随机 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(最终版)、Apache 和 mod_mono。

知道可能是什么原因吗?

编辑:自从我搬到 Linode 并且他们使用 XEN 时我的麻烦就开始了,我发现了 --with-xen_opt=yes 看起来很有希望的选项:http: //mono-project.com/Advanced_Mono_Compile_Options

4

3 回答 3

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 配置中添加这个。

<Location /monocp>
  SetHandler mono-ctrl
  Order deny,allow
  Deny from all
  Allow from 127.0.0.1 <YOURIP>
</Location>

要自动化此过程,请查看Monit

于 2012-01-23T14:05:36.460 回答
0

似乎是由 XEN 虚拟化和单声道预编译二进制文件引起的问题。我使用选项 --with-xen_opt=yes 编译了单声道,但我无法编译 XSP,所以我无法测试是否确实解决了它,但我将完全相同的应用程序移至专用服务器并在 200 万次请求后我没有遇到任何错误。

更新:检查马哈茂德的答案

于 2012-02-09T15:10:02.430 回答
0

FWIW,我在没有虚拟化的专用服务器(8 核 i7,x86 Ubuntu 服务器版)上遇到了完全相同的问题,所以我不认为这是由 Xen 引起的问题。对于 OP (SCL) 或遇到此问题的其他任何人,我已在此处的另一篇 SO 帖子中记录了我的工作,并已向 Mono/Xamarin 提交了错误报告。

这似乎是一种竞争条件,但与虚拟化无关。

于 2012-04-25T05:06:02.417 回答