4

モノ2.10.8.1w/ fastcgi-mono-server4を使用して、Mono/OSXで開発されたASPMVCプロジェクトをLinuxサーバーにデプロイしようとしています。

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

1月から関連するスレッドがありますが、質問と回答の両方がmod_mono固有であり、かなり手に負えないようです。この問題をデバッグ/解決/回避するために何を試みるかについて誰かアドバイスがありますか?とてもイライラしています。特に、Windows Serverマシンから何かをコピーして、バグのあるモノラルの代わりにMS実装を使用できる、「サポートされていない」回避策はありますか?

(私もバグレポートを提出しました。)

4

2 に答える 2

2

存在しない一時ファイルをコンパイルしようとするMonoJITでエラーが発生しているように見えるため、この問題を回避するさまざまな方法を試してみました(解決するのではなく)。うまくいった解決策の1つは、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ページをプリコンパイルするとは思いませんが(私が知る限り、-aot = fullはx86ではサポートされていません)、どういうわけかそれでうまくいきました。それが単なるまぐれであるかどうかを確認するのを待っていましたが、10日前にこれを聞いて以来、おそらく12のコミット/デプロイでうまくいっているので、うまくいくと言っても差し支えないと思います。

于 2012-04-25T05:00:46.490 に答える
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

しかし、それはプリコンパイルとは何の関係もありませんでしたが、私のユーザー名のバックスラッシュとは関係がありました。同様に-openを使用してWindowsドメインにログインするため、ユーザー名は<DOMAIN /> \ <username />ですが、ホームディレクトリには円記号はありません:/ home / likewise-open / <DOMAIN /> / <username / >。この違いまたは単にバックスラッシュ自体が原因で、monoはtempディレクトリでコンパイルされたglobal.asaxを見つけられませんでした。詳細な出力をよく見ると、outパラメーターのバックスラッシュ\がスラッシュ/に変更されていることがわかります。

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 /にコピーすると、アプリケーションは期待どおりに機能します。

これを見るのに2日近くかかったので、この答えを他の人に手伝ってもらえるといいのですが。

于 2014-03-05T13:09:58.183 に答える