2011-08-08 12 views
0

MonoとASP.NET MVC 3を数日間使っています。それは剃刀をほとんどうまく動かす。
ViewBagを使用している行をコメントや削除するとうまくいきます。
しかし、私はViewBagを使用する場合には例外にMicrosoft.CSharp.RuntimeBinder.CSharpArgumentInfoでMonoでRazorを使用する

無効なILコードを提供します:(Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfoFlags、文字列)を作成します。メソッドの本体は空です。

説明:HTTP 500。処理要求のエラーです。

スタックトレース:

System.InvalidProgramException: Invalid IL code in Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo:Create (Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfoFlags,string): method body is empty. 

NerdDinnerV3.Controllers.HomeController.Index() [0x0000a] in /home/telebovich/Projects/EmptyMvc2Application/EmptyMvc2Application/Controllers/HomeController.cs:13 at (wrapper dynamic-method) object.lambda_method  (System.Runtime.CompilerServices.Closure,System.Web.Mvc.ControllerBase,object[]) <IL 0x00006, 0x0002f> 
at System.Web.Mvc.ActionMethodDispatcher.Execute (System.Web.Mvc.ControllerBase,object[]) <IL 0x00008, 0x0001b> 
at System.Web.Mvc.ReflectedActionDescriptor.Execute (System.Web.Mvc.ControllerContext,System.Collections.Generic.IDictionary`2<string, object>) <IL 0x00072, 0x00103> 
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod (System.Web.Mvc.ControllerContext,System.Web.Mvc.ActionDescriptor,System.Collections.Generic.IDictionary`2<string, object>) <IL 0x00003, 0x00019> 
at System.Web.Mvc.ControllerActionInvoker/<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12() <IL 0x0002d, 0x00068> 
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter (System.Web.Mvc.IActionFilter,System.Web.Mvc.ActionExecutingContext,System.Func`1<System.Web.Mvc.ActionExecutedContext>) <IL 0x00031, 0x000b6> 

スタックトレースは以下の通りです13行を指摘している:

ViewBag.Message = "Welcome to ASP.NET MVC!"; 

私は多分すべてのアセンブリ参照が不足しているだろうか?
私を助けてもらえますか?

ありがとうございます。

+0

この回答を見る:http://stackoverflow.com/questions/4239645/does-the-razor-view-engine-work-for-monoまた、ViewData/ViewBagの代わりにビューモデルを使用することをお勧めします。 –

答えて

0

ViewBagはダイナミックとして実装され、.NET 4.0が必要です。 .NET 4.0でサイトを実行していない可能性はありますか?

+0

OPは、彼が 'ViewBag'行をコメントアウトすると、彼のASP.NET MVC 3 Razorアプリケーションが正常に動作すると述べています。 ASP.NET MVC 3アプリケーションは、.NET 4.0をターゲットにしていないとうまく動作しない可能性があります。 –

+0

私はMonoの人ではありませんが、.NET 4のターゲット/コンパイルは、サイトのアプリケーションプールが.NET 4で動作していることを意味しません。プールが別のバージョン用に設定されている場合、サイトが完全にクラッシュするのですか? Monoについて話すときにIIS用語を使用して申し訳ありません... – mgnoonan

+0

サイトはコンパイルされません。 ASP.NET MVC 3アセンブリは.NET 4.0に依存します。 –

0

投稿が削除された理由がわかりません。私は、ViewBagをモノで使用したと言いたいと思っていました。これは、「RazorはMonoで動作しますか?」という質問が理解できるので、これは非常に重要です。または - もっと重要なことは - 'ViewBagでも使えますか?' monoとxspのバージョンについても尋ねていました。新しくコンパイルしたgitバージョンにアップグレードすることで修正された問題があったからです。 OPに:そのような情報を提供してください、多分私はより多くを助けることができるでしょう。

+0

はい、私のサイトはASP.NET MVC 3 + Razorで動作します。しかし、それは 'ViewBag'で動作しません。私はそれをコメントする/削除する必要があります。 – telebovich

+0

使用しているバージョンを教えてください。 – Argie

+0

モノラルランタイムバージョン:2.10.2(tarball ??? 1 16:03:03 EEST 2011); ASP.NETバージョン:4.0.30319.1。 Ubuntu 11.04。 MonoDevelop 2.4(.0?) – telebovich

0

ViewBagは、Linuxで動作するMono 2.10のRazorを使用して素晴らしい作品です。あなたがそれをホストしていることを確認してください。 .Net/Clr 4、したがってダイナミクスをサポートするxsp4(代わりにxsp2)。

+0

モノ2.10.6で問題が修正されました。 – telebovich

+0

私は2.10.1(私が推測する)と2.10.6を使って作業しました。ニースもあなたのために固定されています。 Btw:あなたはどのウェブサーバを使いましたか? xsp4、appache?また、バージョン4モジュール(webserver4)を使うことも重要です。xspを使用してxsp4を使用してダイナミックス、したがってViewBagサポートのような.Net 4のものを取得する必要があります。 – Marc