2012-06-17 12 views
10

üzerinde ASP.NET MVC4 RC ev sahipliği yapmaya nasıl Mono 2.10.8.1 üstüne bir ASP.NET MVC4 RC projeyi barındıracak çalışıyorum. http://www.mono-project.com/Compatibility Buna görebaşarıyla Mono 2.10.8

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 

Mono 2.10.8 uygulanmalıdır: Ben Uygulamaya ilk kez eriştiğinizde aşağıdaki özel durum alıyorum. Microsoft, bu özelliği .NET Framework 4.0: http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.isenabled.aspx

olarak listelemektedir. Bu tür bir çalışma var mı, yoksa şu anda Mono'da MVC4'ü barındırmak mümkün değil mi?

ben bu sorunu alıyorum hem XSP4 kullanırken ediyorum unutmayın ve Apache2'deki mod_mono gerekir.

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) 

cevap

9

TL/DR: yerine Mono altında Koşu MVC4 hala tavsiye edilmez, koşmak MVC3

Mono versiyonu şudur.

Uzun öykü: Mono 2.10.x yayımlandığı sırada Microsoft, ASP.NET yığınını açık kaynak olarak tam olarak serbest bırakmadı (Razor, hala kapalı kaynak olan bileşenlerden biriydi).

son Microsoft nihayet tam yığını opensourced ve Mono onların ağacında, ancak bu (dahil 2.11.x Mono ve tek önizleme sürümleri) yalnızca ana dal içinde oldu eklemiştir. Ayrıca, async API'leri henüz Mono'da uygulanmamıştır (ve MVC4 onlara bağlıdır), o zaman sizin için en iyi bahis Mono 3.0.1 sürümü ile şimdilik MVC3 kullanmaktadır.

Hatta uzun hikaye: http://tirania.org/blog/archive/2012/Mar-28.html

+1

Cevabınız için teşekkürler. Bu sayfadaki istisnanın nedenini buldum: http://go-mono.com/status/status.aspx?reference=4.0&profile=4.0&assembly=System.Web Basitçe uygulamamışlar. –

+0

@ knocte: Bazı ayrıntılar eksik olabilir, ancak async API'lerine bağlı olmadığından asp.net mvc 4 için 4.5 .net'e ihtiyacınız olduğuna inanmıyorum - daha fazla bilgiyi buradan okuyun: http://stackoverflow.com/ sorular/9548283/can-i-dağıtımı-my-asp-net-mvc-4-uygulama-içinde-net-4/10463662 # 10463662 – corolla

+0

Tamam, belki MVC4'ün bir alt kümesini hedefleyebilir, fakat tüm MVC4'ü hedefleyemezsiniz? – knocte

1

aksi takdirde System.IO.FileNotFoundException mesajı alacak, yeni XSP

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

Bu sürüm, sudo... çalıştırmak için yeterli izniniz gerekiyor kaynakları oluşturmak derlemek gerekiyor.

Sonra CS0234: The type or namespace name Helpers does not exist in the namespace System.Web. istisna ortadan kaldırmak için web.config dosyasında

<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> 

şu satırları ekleyin. (Bu Windows makinesinde formu kopyalanır ise)

Ardından bin klasöründen bu derlemeleri kaldırmak

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

Bu Missing method System.Web.Security.FormsAuthentication::get_IsEnabled() istisna ve diğer birçok could not load type xyz istisnaları kaldıracaktır.

3

Bu artık mümkün ve neredeyse güncel mono salınımı üzerinde basit ve Nuget kullanıyor. MS'nin NuGet'e MVC4 malzeme koyması yardımcı oluyor. Github https://github.com/chrisfcarroll/AspNetTemplatesForMono üzerinde .Net 4 & .Net 4.5 için çalışan şablonları koyduk. Birkaç tuhaf var, ama notlarda ele alındı.

0

Kaldır referans System.Web.Http ve System.Web.Http.Host için bunları (WebAPI kitaplığı) gerekmiyorsa. Sen App_Start klasörüne ve Global.asax yılında referanslarında WebApiConfig.cs kaldırmak gerekebilir. Ancak bundan sonra projeniz başka bir sorun olmadan çalışacaktır.