tag net mvc component asp asp.net apache asp.net-mvc-4 mono asp.net-4.5

asp.net - component - Ejecutando Mono 3.2.0 con.NET MVC 4



render partial asp net core (2)

Estoy tratando de obtener la configuración Mono 3.0 para ejecutar sitios MVC4 en .NET 4 y .NET 4.5. He estado trabajando en varios errores, ¿qué puedo hacer para ponerlo en funcionamiento?

Configuración del servidor

  • CentOS 5
  • Apache 2.2.3
  • 3.2.0 (tarball dom Jul 28 00:57:40 UTC 2013); Versión ASP.NET: 4.0.30319.17020 2013)
  • Último XSP de git, a partir del momento de esta publicación

Apache / Mono Config

MonoServerPath "/usr/local/bin/mod-mono-server4"

/ usr / local / bin / mod-mono-server4 contenido:

#!/bin/sh exec /usr/local/bin/mono $MONO_OPTIONS "/usr/local/lib/mono/4.5/mod-mono-server4.exe" "$@"

Actualizar

El quid del problema es que Mono no se envía con MVC4 que requiere el sitio. Todavía tiene los dlls MVC3, pero tiene los dlls Razor 2 pero no los dlls Razor 1 que MVC3 quiere demandar.


Todo lo que necesita ahora está disponible dentro del marco Mono o en NuGet. Creé una plantilla descargable para MVC4 para .Net 4.0 y .Net 4.5 y algunas notas sobre cómo resolver los problemas:

http://www.cafe-encounter.net/p1510/asp-net-mvc4-net-framework-version-4-5-c-razor-template-for-mono-on-mac-and-linux

Los pasos de la publicación del blog son:

  • git clone github.com/chrisfcarroll/AspNetTemplatesForMono/Mvc4CSharpRazorFx45Intranet NB Este repositorio github incluye todos los archivos DLL necesarios en caso de que no tenga NuGet funcionando, por lo que se trata de una descarga de gran tamaño.
  • Abra la solución en Xamarin Studio. Casi funciona fuera de la caja. Lo único que tienes que hacer es elegir uno de estos 2 pasos para que funcione:

Elimine Microsoft.Web.Infrastructure.dll del directorio bin / y del proyecto

O, desde la línea de comando:

sudo mkdir /Library/Frameworks/Mono.framework/Versions/3.2.5/etc/mono/registry sudo chmod g+rwx /Library/Frameworks/Mono.framework/Versions/3.2.5/etc/mono/registry

(reemplazando 3.2.5 con su versión mono, que obtiene en la línea de comando con monoversión);

Se requiere Microsoft.Web.Infrastructure.dll en .Net en Windows, por lo que eliminarlo no es el enfoque más simple si desea la implementación multiplataforma.


Éxito

Si desea ejecutar MVC4 en Mono, debe usar algunos DLL de Microsoft que no son proporcionados por Mono en este momento.

Una advertencia: al echar un vistazo superficial a la fuente Mono, parece que hay métodos y clases en la fuente MC4 que no existen en la compilación 3.2.0. Puede haber funciones que están rotas. El sitio que estoy ejecutando es para todos los efectos un sitio MVC3 construido contra los últimos dlls.

Microsoft DLL para copiar

  • System.Web.Abstractions - 4.0
  • System.Web.Helpers - 2.0
  • System.Web.Mvc - 4.0

Una vez que haya copiado los dlls, si todavía tiene problemas, es posible que tenga que realizar algún trabajo de detección si la solución anterior no funciona. Si aparece un mensaje de error que dice que Mono no puede encontrar el archivo DLL, generalmente es una de las siguientes tres razones:

Solución de problemas

  1. No tiene el dll. Puede intentar usar la versión de Microsoft de la DLL

  2. Está buscando una versión anterior de la DLL cuando se instala la correcta en el GAC o en la carpeta del proyecto. Es probable que un ensamblaje de su proyecto haga referencia a esa versión en alguna parte. Puede usar una redirección de enlace para forzar la versión específica que se utilizará en su lugar

  3. Todavía no puede encontrar el dll - Agregue el ensamblado en la sección de compilación / ensamblaje de su web.config

  4. Aparecerá el mensaje "no se puede ver la búsqueda ...": si alguna de las vistas en esa carpeta de vistas en particular tiene errores de compilación, recibirá este mensaje.