微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

asp.net – 单声道随机CS0006编译错误w / fastcgi-mono-server4

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

webapp总是正常启动,但随后我开始为各种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

从1月开始有a related thread,但问题和答案似乎都是mod_mono特定而且手工波浪状.任何人都有任何关于尝试调试/解决/解决此问题的建议?它变得非常令人沮丧.特别是,是否有任何“不支持”的解决方法,我可以从我的Windows Server计算机复制一些东西,使用MS实现而不是错误的单声道?

(我也是filed a bug report.)

解决方法

由于错误似乎是Mono JIT试图编译不存在的临时文件的问题,我花了几天尝试不同的方法解决这个问题(vs解决它).一个有效的解决方案是在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),但不知怎的,它完成了这项工作.我等着看这是不是只是一个侥幸,但是自从我十天前问过这个问题以来,我可能已经很好了十几次提交/部署,所以我认为它可以说是有效的.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐