2012-06-17 9 views
10

Estoy tratando de alojar un proyecto ASP.NET MVC4 RC sobre Mono 2.10.8.1. Me estoy poniendo la siguiente excepción cuando accedo a la aplicación por primera vez:Cómo alojar con éxito ASP.NET MVC4 RC en 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 

Según http://www.mono-project.com/Compatibility la tarea debe realizarse en Mono 2.10.8. Microsoft enumera la propiedad como .NET Framework 4.0: http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.isenabled.aspx

¿Hay algún tipo de problema o simplemente no es posible alojar MVC4 en Mono en este momento?

Debo notar que estoy obteniendo este problema tanto cuando uso XSP4 como mod_mono en Apache2.

versión Mono es el siguiente:/DR

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) 

Respuesta

9

TL: todavía no se recomienda MVC4 Correr bajo Mono, MVC3 correr en su lugar.

Larga historia: en el momento en que se lanzó Mono 2.10.x, Microsoft no había lanzado completamente la pila de ASP.NET como código abierto (Razor era uno de los componentes que seguía siendo de fuente cerrada).

Recientemente, Microsoft finalmente ha abierto la pila completa, y Mono lo ha incluido en su árbol, sin embargo, esto ha sucedido solo en la rama principal (y solo las versiones de vista previa de Mono 2.11.x lo incluyen). Además, las API asíncronas aún no se implementan en Mono (y MVC4 depende de ellas) por lo que la mejor apuesta para usted es usar MVC3 por ahora, con la versión Mono 3.0.1.

historia aún más larga: http://tirania.org/blog/archive/2012/Mar-28.html

+1

Gracias por la respuesta. Encontré el motivo de la excepción en esta página: http://go-mono.com/status/status.aspx?reference=4.0&profile=4.0&assembly=System.Web Simplemente no lo han implementado. –

+0

@knocte: Me pueden faltar algunos detalles, pero no creo que necesite .net 4.5 para asp.net mvc 4, ya que no depende de las API asincrónicas. Obtenga más información aquí: http://stackoverflow.com/ preguntas/9548283/can-i-deploy-my-asp-net-mvc-4-application-in-net-4/10463662 # 10463662 – corolla

+0

bien, ¿tal vez puede orientar un subconjunto de MVC4, pero no todo el MVC4? – knocte

1

necesita compilar el nuevo XSP forman las fuentes

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

Esta versión necesita suficiente permiso para ejecutar, sudo..., de lo contrario obtendrá el mensaje System.IO.FileNotFoundException.

A continuación, agregue estas líneas a su archivo 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> 

Para eliminar CS0234: The type or namespace name Helpers does not exist in the namespace System.Web. excepción.

A continuación, eliminar estos montajes de su carpeta bin (si se copian los formulario de la máquina de Windows)

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

Esto eliminará Missing method System.Web.Security.FormsAuthentication::get_IsEnabled() excepción y muchos otros could not load type xyz excepciones.

3

Ahora es posible, y es casi sencillo en la versión mono actual y el uso de NuGet. El hecho de que MS haya puesto MVC4 en NuGet ayuda. He puesto plantillas de trabajo para .Net 4 & .Net 4.5 en github https://github.com/chrisfcarroll/AspNetTemplatesForMono. Hay un par de trampas, pero se abordan en notas.

0

eliminar la referencia a System.Web.Http y System.Web.Http.Host si no ellos (biblioteca WebAPI) necesita. Es posible que deba eliminar WebApiConfig.cs en la carpeta App_Start y las referencias en Global.asax. Pero después de eso su proyecto funcionará sin ningún otro problema.