2012-04-15 5 views
4

私はモノ2.10.8.1を使用して、私のLinuxサーバ上のMono/OSX上で開発されたASP MVCプロジェクトを展開しようとしているのfastcgi-モノSERVER4/WモノランダムCS0006コンパイル・エラーのfastcgi-モノSERVER4/W

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をしました。)

+0

これは非常に奇妙です、それはまだ生成されたdllに依存している間、ビューをコンパイルしようとしているようです。より新しいバージョンのモノにアップデートしようとしましたか?私はこの問題に直面することなく、fastcgi-mono-serverとmod_monoの両方をモノ2.10.5で試しました。 –

答えて

2

エラーが存在しない一時ファイルをコンパイルしようとするモノJITの問題のように見えるので、私はこれを回避作業のさまざまな方法を試して数日を過ごしました問題(それを解くことに対する)。 1つの解決策は、Linux上でaspnet_compilerを使用してバイナリバージョンを作成し、そのままLinux/Monoでコピーして実行できるようにすることでした(Monoの最新バージョンはプリコンパイルされたASP.NETアプリケーションをサポートしています)。

しかし、私はネイティブのLinuxソリューションを探していた、と私は、サーバーへの(コードのGITのレポを同期対)をコンパイルし、同期のバイナリする必要がありますする必要はありませんので、私は別の解決策を探していたとき、I Windowsのngen.exeに相当する、先にコンパイルする前にモノを見つけました。

すべてをプリコンパイルするわけではありませんが、このトリックを行ったようです。私にとって、この展開スクリプトは、任意の実行時のビルドの失敗せずに仕事をしていません:SystemDiscs*.dllが最初のステップでxbuildでコンパイルしたソリューションの出力である

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 & 

。私はこれがASPページをプリコンパイルするとは思っていません(そして、--aot = fullはx86ではサポートされていませんが、何とかそれは仕事をしました)。私はそれがちょうどうず虫であるかどうかを確認するのを待っていましたが、10日前に尋ねて以来、おそらく十数回のコミット/デプロイでうまくいっています。

1

私は似ていた問題:

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/<DOMAIN/>/<username/>-temp-aspnet-0/5ed74d00/App_global.asax_34cccb99.dll' could not be found 
/Default.aspx 

をしかし、それはプリコンパイルではなく自分のユーザー名にバックスラッシュとは何の関係もありませんでした。同じように開いてWindowsドメインにログインすると、私のユーザ名は< DOMAIN/> \ < username/>私のホームディレクトリにはバックスラッシュが付きません:/ home/likewise-open/< DOMAIN/>/<ユーザ名/ >。この違いやバックスラッシュそのものが、monディレクトリのコンパイル済みglobal.asaxを見つけられませんでした。だから、

dmcs /target:library /lib:"/home/likewise-open/<DOMAIN/>/<username/>/Documents/test9999/test9999/bin" /debug+ /optimize- /warn:4 /out:"/tmp/<DOMAIN/>\<username/>-temp-aspnet-0/5ed74d00/App_Web_17ca7bdd.dll" /r:"/usr/lib/mono/4.0/mscorlib.dll" /r:"/usr/lib/mono/gac/Microsoft.CSharp/4.0.0.0__b03f5f7f11d50a3a/Microsoft.CSharp.dll" /r:"/usr/lib/mono/gac/System/4.0.0.0__b77a5c561934e089/System.dll" /r:"/usr/lib/mono/gac/System.Configuration/4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll" /r:"/usr/lib/mono/gac/System.Web/4.0.0.0__b03f5f7f11d50a3a/System.Web.dll" /r:"/usr/lib/mono/gac/System.Data/4.0.0.0__b77a5c561934e089/System.Data.dll" /r:"/usr/lib/mono/gac/System.Web.Services/4.0.0.0__b03f5f7f11d50a3a/System.Web.Services.dll" /r:"/usr/lib/mono/gac/System.Xml/4.0.0.0__b77a5c561934e089/System.Xml.dll" /r:"/usr/lib/mono/gac/System.Drawing/4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll" /r:"/usr/lib/mono/gac/System.EnterpriseServices/4.0.0.0__b03f5f7f11d50a3a/System.EnterpriseServices.dll" /r:"/usr/lib/mono/gac/System.IdentityModel/4.0.0.0__b77a5c561934e089/System.IdentityModel.dll" /r:"/usr/lib/mono/gac/System.Runtime.Serialization/4.0.0.0__b77a5c561934e089/System.Runtime.Serialization.dll" /r:"/usr/lib/mono/gac/System.Xaml/4.0.0.0__b77a5c561934e089/System.Xaml.dll" /r:"/usr/lib/mono/gac/System.ServiceModel/4.0.0.0__b77a5c561934e089/System.ServiceModel.dll" /r:"/usr/lib/mono/gac/System.ServiceModel.Web/4.0.0.0__31bf3856ad364e35/System.ServiceModel.Web.dll" /r:"/usr/lib/mono/gac/System.Core/4.0.0.0__b77a5c561934e089/System.Core.dll" /r:"/usr/lib/mono/gac/System.Web.Extensions/4.0.0.0__31bf3856ad364e35/System.Web.Extensions.dll" /r:"/usr/lib/mono/gac/System.Data.DataSetExtensions/4.0.0.0__b77a5c561934e089/System.Data.DataSetExtensions.dll" /r:"/usr/lib/mono/gac/System.Xml.Linq/4.0.0.0__b77a5c561934e089/System.Xml.Linq.dll" /r:"/usr/lib/mono/gac/System.ComponentModel.DataAnnotations/4.0.0.0__31bf3856ad364e35/System.ComponentModel.DataAnnotations.dll" /r:"/usr/lib/mono/gac/System.Web.DynamicData/4.0.0.0__31bf3856ad364e35/System.Web.DynamicData.dll" /r:"/usr/lib/mono/gac/System.Data.Linq/4.0.0.0__b77a5c561934e089/System.Data.Linq.dll" /r:"/usr/lib/mono/gac/System.Web.ApplicationServices/4.0.0.0__31bf3856ad364e35/System.Web.ApplicationServices.dll" /r:"/home/likewise-open/<DOMAIN/>/<username/>/Documents/test9999/test9999/bin/test9999.dll" /r:"/tmp/<domain/>/<username/>-temp-aspnet-0/5ed74d00/App_global.asax_34cccb99.dll" /nowarn:0169 /d:DEBUG -- "/tmp/<DOMAIN/>\<username/>-temp-aspnet-0/5ed74d00/App_Web_17ca7bdd_0.cs" 

:あなたは、詳細な出力をよく見ると、あなたは/アウトパラメータにバックスラッシュ\をスラッシュに変更されていることが分かり

/out:"/tmp/<DOMAIN/>\<username/>-temp-aspnet-0/5ed74d00/App_Web_17ca7bdd.dll 

/tmp/<DOMAIN/>/<username/>-temp-aspnet-0/5ed74d00/App_global.asax_34cccb99.dll 

になりますディレクトリ5ed74d00を/ tmp/<にコピーすると、DOMAIN/>/< username/> -temp-aspnet-0 /アプリケーションがexpecとして動作しますテッド。

これを見るには2日ほどかかりました。この回答で他の人を助けることができれば幸いです。