gpt4 book ai didi

asp.net - 带有 fastcgi-mono-server4 的单声道随机 CS0006 编译错误

转载 作者:IT王子 更新时间:2023-10-29 01:27:38 27 4
gpt4 key购买 nike

我正在尝试使用带有 fastcgi-mono-server4 的 mono 2.10.8.1 在我的 Linux 服务器上部署在 Mono/OSX 上开发的 ASP MVC 项目

Web 应用程序始终启动良好,但随后我开始收到各种 URI 的随机 CS0006 编译错误,一旦它们中断,它们将一直中断,直到我重新启动服务器应用程序。

错误示例:

Server Error in '/' Application

Compilation Error

Description: Error compiling a resource required to service this request. Review your source file and modify it to fix this error.

Compiler Error Message: CS0006: Metadata file `/tmp/root-temp-aspnet-0/ed68754/App_global.asax_40e709ea.dll' could not be found

~/Views/Order/Download.aspx

a related thread从一月份开始,但问题和答案似乎都是特定于 mod_mono 的,而且是手摇式的。有人对如何尝试调试/解决/解决此问题有任何建议吗?它变得非常令人沮丧。特别是,是否有任何“不受支持”的解决方法,我可以从我的 Windows Server 机器上复制一些东西来使用 MS 实现而不是有问题的单声道?

(我也有 filed a bug report。)

最佳答案

由于错误似乎是 Mono JIT 试图编译不存在的临时文件的问题,我花了几天时间尝试不同的方法来解决这个问题(与解决它相比)。一种可行的解决方案是在 Windows 上使用 aspnet_compiler 创建一个二进制版本,该版本可以在 Linux/Mono 上按原样复制和运行(因为最新版本的 Mono 现在支持预编译的 ASP.NET 应用程序)。

但是,我一直在寻找一个原生的 Linux 解决方案,我不想编译和同步二进制文件(相对于同步一个 GIT 代码库)到服务器,所以我来的时候正在寻找另一个解决方案跨 Mono 提前编译,这几乎等同于 Windows 上的 ngen.exe。

虽然它没有预编译所有内容,但它似乎已经成功了。对我来说,这个部署脚本可以在没有任何运行时构建失败的情况下完成工作:

xbuild SystemDiscs.sln
mono --aot -O=all SystemDiscs/bin/SystemDiscs*.dll
killall -9 mono
nohup fastcgi-mono-server4 /socket=tcp:127.0.0.1:8000 /applications=/:/var/asp/S
ystemDiscs/SystemDiscs/ > /var/log/systemdiscs.log &

其中SystemDiscs*.dll是第一步用xbuild编译的解决方案的输出。我认为这不会预编译 ASP 页面(据我所知,x86 不支持 --aot=full),但它以某种方式完成了工作。我一直在等着看这是否只是侥幸,但自从我十天前提出这个问题以来,大约有十几个提交/部署一直很顺利,所以我认为可以肯定地说它有效。

关于asp.net - 带有 fastcgi-mono-server4 的单声道随机 CS0006 编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10160605/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com