10

Mono 2.10.8.1 の上に ASP.NET MVC4 RC プロジェクトをホストしようとしています。アプリに初めてアクセスすると、次の例外が発生します。

Missing method System.Web.Security.FormsAuthentication::get_IsEnabled() in assembly /usr/lib/mono/gac/System.Web/4.0.0.0__b03f5f7f11d50a3a/System.Web.dll, referenced in assembly /tmp/root-temp-aspnet-0/eaee30a1/assembly/shadow/5cf10065/40974e7d_1c664e18_00000001/System.Web.Http.WebHost.dll

http://www.mono-project.com/Compatibilityによると、これは Mono 2.10.8 で実装する必要があります。Microsoft はこのプロパティを .NET Framework 4.0 としてリストしています: http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.isenabled.aspx

なんらかの回避策がありますか、それとも現時点で Mono で MVC4 をホストすることはできないのでしょうか?

XSP4 と mod_mono を Apache2 で使用しているときに、この問題が発生することに注意してください。

モノバージョンは次のとおりです。

Mono JIT compiler version 2.10.8.1 (Debian 2.10.8.1-1~dhx1~lucid1)
Copyright (C) 2002-2011 Novell, Inc, Xamarin, Inc and Contributors. www.mono-project.com
        TLS:           __thread
        SIGSEGV:       altstack
        Notifications: epoll
        Architecture:  x86
        Disabled:      none
        Misc:          softdebug
        LLVM:          supported, not enabled.
        GC:            Included Boehm (with typed GC and Parallel Mark)
4

5 に答える 5

9

TL/DR: Mono で MVC4 を実行することはまだ推奨されていません。代わりに MVC3 を実行してください。

長い話: Mono 2.10.x がリリースされた時点で、Microsoft は ASP.NET スタックをオープン ソースとして完全にリリースしていませんでした (Razor は、まだクローズド ソースであったコンポーネントの 1 つです)。

最近、Microsoft はついに完全なスタックをオープンソース化し、Mono はそれをツリーに含めましたが、これは master ブランチでのみ発生しました (Mono 2.11.x のプレビュー バージョンのみが含まれています)。さらに、非同期 API はまだ Mono に実装されていません (そして MVC4 はそれらに依存しています)。そのため、今のところ Mono 3.0.1 バージョンで MVC3 を使用することをお勧めします。

さらに長いストーリー: http://tirania.org/blog/archive/2012/Mar-28.html

于 2012-06-18T15:06:09.780 に答える
1

ソースから新しい XSP をコンパイルする必要があります。

git clone git://github.com/mono/xsp.git
cd xsp
./autogen.sh --prefix=/opt
make
sudo make install

このバージョンを実行するには十分な権限が必要です。sudo...そうしないと、System.IO.FileNotFoundExceptionメッセージが表示されます。

次に、これらの行を web.config ファイルに追加します

<system.web> 
    <compilation debug="true" targetFramework="4.0">
      <assemblies>
        <add assembly="System.Web.Helpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />        
        <add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />        
      </assemblies>
    </compilation>

例外を排除しCS0234: The type or namespace name Helpers does not exist in the namespace System.Web.ます。

次に、これらのアセンブリを bin フォルダーから削除します (Windows マシンからコピーされた場合)。

Microsoft.Web.Infrastructure.dll
System.Net.Http.dll
System.Net.Http.Formatting.dll
System.Web.Http.dll
System.Web.Http.WebHost.dll

Missing method System.Web.Security.FormsAuthentication::get_IsEnabled()これにより、例外と他の多くの例外が削除されcould not load type xyzます。

于 2013-09-22T20:49:55.913 に答える
0

Mono で MVC 4 アプリケーションを正常にホストするには、以下のリンクに従ってください。

http://www.bgsoftfactory.net/run-asp-net-mvc-4-with-mysql-on-linux/

Linux サーバーでの段階的な構成を提供します。

于 2014-10-21T13:48:53.590 に答える