www with programacion net framework for asp asp.net linux mono fastcgi-mono-server

asp.net - with - Errores de compilación mono aleatorios CS0006 con fastcgi-mono-server4



mono with apache (2)

Tuve un problema similar:

Compilation Error Description: Error compiling a resource required to service this request. Review your source file and modify it to fix this error. Compiler Error Message: CS0006: Metadata file `/tmp/<DOMAIN/>/<username/>-temp-aspnet-0/5ed74d00/App_global.asax_34cccb99.dll'' could not be found /Default.aspx

Pero no tiene nada que ver con la precompilación, pero con una barra invertida en mi nombre de usuario. También uso-abierto para iniciar sesión en un dominio de Windows, por lo que mi nombre de usuario es <DOMINIO /> / <nombre de usuario /> mientras mi directorio personal no tiene una barra invertida: / home / similarwise-open / <DOMAIN /> / <username / >. Esta diferencia o simplemente la barra diagonal inversa provocó que mono no encontrara el archivo global.asax compilado en el directorio temporal. Si observa detenidamente el resultado detallado, verá que la barra invertida / en el parámetro out se cambia a una barra inclinada /:

dmcs /target:library /lib:"/home/likewise-open/<DOMAIN/>/<username/>/Documents/test9999/test9999/bin" /debug+ /optimize- /warn:4 /out:"/tmp/<DOMAIN/>/<username/>-temp-aspnet-0/5ed74d00/App_Web_17ca7bdd.dll" /r:"/usr/lib/mono/4.0/mscorlib.dll" /r:"/usr/lib/mono/gac/Microsoft.CSharp/4.0.0.0__b03f5f7f11d50a3a/Microsoft.CSharp.dll" /r:"/usr/lib/mono/gac/System/4.0.0.0__b77a5c561934e089/System.dll" /r:"/usr/lib/mono/gac/System.Configuration/4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll" /r:"/usr/lib/mono/gac/System.Web/4.0.0.0__b03f5f7f11d50a3a/System.Web.dll" /r:"/usr/lib/mono/gac/System.Data/4.0.0.0__b77a5c561934e089/System.Data.dll" /r:"/usr/lib/mono/gac/System.Web.Services/4.0.0.0__b03f5f7f11d50a3a/System.Web.Services.dll" /r:"/usr/lib/mono/gac/System.Xml/4.0.0.0__b77a5c561934e089/System.Xml.dll" /r:"/usr/lib/mono/gac/System.Drawing/4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll" /r:"/usr/lib/mono/gac/System.EnterpriseServices/4.0.0.0__b03f5f7f11d50a3a/System.EnterpriseServices.dll" /r:"/usr/lib/mono/gac/System.IdentityModel/4.0.0.0__b77a5c561934e089/System.IdentityModel.dll" /r:"/usr/lib/mono/gac/System.Runtime.Serialization/4.0.0.0__b77a5c561934e089/System.Runtime.Serialization.dll" /r:"/usr/lib/mono/gac/System.Xaml/4.0.0.0__b77a5c561934e089/System.Xaml.dll" /r:"/usr/lib/mono/gac/System.ServiceModel/4.0.0.0__b77a5c561934e089/System.ServiceModel.dll" /r:"/usr/lib/mono/gac/System.ServiceModel.Web/4.0.0.0__31bf3856ad364e35/System.ServiceModel.Web.dll" /r:"/usr/lib/mono/gac/System.Core/4.0.0.0__b77a5c561934e089/System.Core.dll" /r:"/usr/lib/mono/gac/System.Web.Extensions/4.0.0.0__31bf3856ad364e35/System.Web.Extensions.dll" /r:"/usr/lib/mono/gac/System.Data.DataSetExtensions/4.0.0.0__b77a5c561934e089/System.Data.DataSetExtensions.dll" /r:"/usr/lib/mono/gac/System.Xml.Linq/4.0.0.0__b77a5c561934e089/System.Xml.Linq.dll" /r:"/usr/lib/mono/gac/System.ComponentModel.DataAnnotations/4.0.0.0__31bf3856ad364e35/System.ComponentModel.DataAnnotations.dll" /r:"/usr/lib/mono/gac/System.Web.DynamicData/4.0.0.0__31bf3856ad364e35/System.Web.DynamicData.dll" /r:"/usr/lib/mono/gac/System.Data.Linq/4.0.0.0__b77a5c561934e089/System.Data.Linq.dll" /r:"/usr/lib/mono/gac/System.Web.ApplicationServices/4.0.0.0__31bf3856ad364e35/System.Web.ApplicationServices.dll" /r:"/home/likewise-open/<DOMAIN/>/<username/>/Documents/test9999/test9999/bin/test9999.dll" /r:"/tmp/<domain/>/<username/>-temp-aspnet-0/5ed74d00/App_global.asax_34cccb99.dll" /nowarn:0169 /d:DEBUG -- "/tmp/<DOMAIN/>/<username/>-temp-aspnet-0/5ed74d00/App_Web_17ca7bdd_0.cs"

Asi que:

/out:"/tmp/<DOMAIN/>/<username/>-temp-aspnet-0/5ed74d00/App_Web_17ca7bdd.dll

se convierte

/tmp/<DOMAIN/>/<username/>-temp-aspnet-0/5ed74d00/App_global.asax_34cccb99.dll

Si copio el directorio 5ed74d00 en / tmp / <DOMAIN /> / <username /> - temp-aspnet-0 / la aplicación funciona como se esperaba.

Me tomó casi 2 días para ver esto, así que espero poder ayudar a otros con esta respuesta.

Estoy tratando de implementar un proyecto ASP MVC desarrollado en Mono / OSX en mi servidor Linux usando mono 2.10.8.1 w / fastcgi-mono-server4

La aplicación web siempre comienza bien, pero luego empiezo a obtener errores de compilación aleatorios CS0006 para varios URI, y una vez que se rompen, permanecen rotos hasta que reinicie la aplicación del servidor.

Un error de ejemplo:

Server Error in ''/'' Application Compilation Error Description: Error compiling a resource required to service this request. Review your source file and modify it to fix this error. Compiler Error Message: CS0006: Metadata file `/tmp/root-temp-aspnet-0/ed68754/App_global.asax_40e709ea.dll'' could not be found ~/Views/Order/Download.aspx

Hay un hilo relacionado de enero, pero tanto la pregunta como la respuesta parecen ser mod_mono específicas y bastante onduladas a mano. ¿Alguien tiene algún consejo sobre qué intentar depurar / resolver / solucionar este problema? Se está poniendo muy frustrante. En particular, ¿hay alguna solución alternativa "no compatible" en la que pueda copiar algo de mis máquinas con Windows Server para usar una implementación de MS en lugar del mono único con errores?

(He archivado un informe de error también).


Dado que los errores parecen ser un problema con el Mono JIT que intenta compilar archivos temporales que no existen, pasé unos días probando diferentes métodos para solucionar este problema (frente a resolverlo). Una solución que funcionó fue el uso de aspnet_compiler en Windows para crear una versión binaria que pudiera copiarse y ejecutarse tal cual en Linux / Mono (ya que las últimas versiones de Mono ahora admiten aplicaciones ASP.NET precompiladas).

Sin embargo, estaba buscando una solución Linux nativa, y no quiero tener que compilar y sincronizar binarios (en lugar de sincronizar un repo de código GIT) con el servidor, así que estaba buscando otra solución cuando encontré Mono por delante de compilación de tiempo, que es más o menos el equivalente de ngen.exe en Windows.

Si bien no precompila todo, parece haber hecho el truco. Para mí, este script de despliegue hace el trabajo sin fallas de compilación en tiempo de ejecución:

xbuild SystemDiscs.sln mono --aot -O=all SystemDiscs/bin/SystemDiscs*.dll killall -9 mono nohup fastcgi-mono-server4 /socket=tcp:127.0.0.1:8000 /applications=/:/var/asp/S ystemDiscs/SystemDiscs/ > /var/log/systemdiscs.log &

Donde SystemDiscs*.dll es el resultado de la solución compilada con xbuild en el primer paso. No creo que esto precompile las páginas ASP (y --aot = full no es compatible con x86, por lo que puedo decir), pero de alguna manera hizo el trabajo. Estaba esperando ver si eso fue solo una casualidad, pero ha estado funcionando bien con tal vez una docena de commits / deploys desde que pregunté esto hace diez días, así que creo que es seguro decir que funciona.