Ceci est l'erreur que je reçois quand je démarre mon application ASP.NET dans Mono:System.InvalidOperationException compilation application ASP.NET sur Mono
System.InvalidOperationException: The process must exit before getting the requested information.
at System.Diagnostics.Process.get_ExitCode() [0x00044] in /usr/src/mono-2.6.3/mcs/class/System/System.Diagnostics/Process.cs:149
at (wrapper remoting-invoke-with-check) System.Diagnostics.Process:get_ExitCode()
at Mono.CSharp.CSharpCodeCompiler.CompileFromFileBatch (System.CodeDom.Compiler.CompilerParameters options, System.String[] fileNames) [0x001ee] in /usr/src/mono-2.6.3/mcs/class/System/Microsoft.CSharp/CSharpCodeCompiler.cs:267
at Mono.CSharp.CSharpCodeCompiler.CompileAssemblyFromFileBatch (System.CodeDom.Compiler.CompilerParameters options, System.String[] fileNames) [0x00011] in /usr/src/mono-2.6.3/mcs/class/System/Microsoft.CSharp/CSharpCodeCompiler.cs:156
at System.CodeDom.Compiler.CodeDomProvider.CompileAssemblyFromFile (System.CodeDom.Compiler.CompilerParameters options, System.String[] fileNames) [0x00014] in /usr/src/mono-2.6.3/mcs/class/System/System.CodeDom.Compiler/CodeDomProvider.cs:119
at System.Web.Compilation.AssemblyBuilder.BuildAssembly (System.Web.VirtualPath virtualPath, System.CodeDom.Compiler.CompilerParameters options) [0x0022f] in /usr/src/mono-2.6.3/mcs/class/System.Web/System.Web.Compilation/AssemblyBuilder.cs:804
at System.Web.Compilation.AssemblyBuilder.BuildAssembly (System.Web.VirtualPath virtualPath) [0x00000] in /usr/src/mono-2.6.3/mcs/class/System.Web/System.Web.Compilation/AssemblyBuilder.cs:730
at System.Web.Compilation.BuildManager.GenerateAssembly (System.Web.Compilation.AssemblyBuilder abuilder, System.Web.Compilation.BuildProviderGroup group, System.Web.VirtualPath vp, Boolean debug) [0x00254] in /usr/src/mono-2.6.3/mcs/class/System.Web/System.Web.Compilation/BuildManager.cs:624
at System.Web.Compilation.BuildManager.BuildInner (System.Web.VirtualPath vp, Boolean debug) [0x0011c] in /usr/src/mono-2.6.3/mcs/class/System.Web/System.Web.Compilation/BuildManager.cs:411
at System.Web.Compilation.BuildManager.Build (System.Web.VirtualPath vp) [0x00050] in /usr/src/mono-2.6.3/mcs/class/System.Web/System.Web.Compilation/BuildManager.cs:356
at System.Web.Compilation.BuildManager.GetCompiledType (System.Web.VirtualPath virtualPath) [0x0003a] in /usr/src/mono-2.6.3/mcs/class/System.Web/System.Web.Compilation/BuildManager.cs:803
at System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath (System.Web.VirtualPath virtualPath, System.Type requiredBaseType) [0x0000c] in /usr/src/mono-2.6.3/mcs/class/System.Web/System.Web.Compilation/BuildManager.cs:500
at System.Web.UI.PageParser.GetCompiledPageInstance (System.String virtualPath, System.String inputFile, System.Web.HttpContext context) [0x0001c] in /usr/src/mono-2.6.3/mcs/class/System.Web/System.Web.UI/PageParser.cs:161
at System.Web.UI.PageHandlerFactory.GetHandler (System.Web.HttpContext context, System.String requestType, System.String url, System.String path) [0x00000] in /usr/src/mono-2.6.3/mcs/class/System.Web/System.Web.UI/PageHandlerFactory.cs:45
at System.Web.HttpApplication.GetHandler (System.Web.HttpContext context, System.String url, Boolean ignoreContextHandler) [0x00055] in /usr/src/mono-2.6.3/mcs/class/System.Web/System.Web/HttpApplication.cs:1643
at System.Web.HttpApplication.GetHandler (System.Web.HttpContext context, System.String url) [0x00000] in /usr/src/mono-2.6.3/mcs/class/System.Web/System.Web/HttpApplication.cs:1624
at System.Web.HttpApplication+<Pipeline>c__Iterator2.MoveNext() [0x0075f] in /usr/src/mono-2.6.3/mcs/class/System.Web/System.Web/HttpApplication.cs:1259
J'ai vérifié le code source indiqué par le stacktrace, à savoir: CSharpCodeCompiler .cs: 267
mcs.WaitForExit();
result.NativeCompilerReturnValue = mcs.ExitCode; //this throws the exception
je n'ai pas ideea si cela est un bug dans Mono, ou si mon application est en train de faire quelque chose qu'il shoudn't. Une simple application "Hello World" indique que Mono est correctement installé et fonctionne correctement, C'est juste mon application qui provoque cette exception.
Espérant certains esprits Enlighted ont plus sur la question
Je suis runing Apache + mod_mono 2.6.3 sur un CentOS 5.4 serveur.
Ce qui semble faire la différence entre un simple « Bonjour tout le monde » et mon application, est qu'il n'y a un tas de choses passe dans Application_Start de Global.asax(). Il y a des sockets TCP ouvertes (et fermées), des dizaines de nouveaux threads engendrés (environ 80) et divers services démarrés et fermés. Dans un serveur Windows + IIS normal, l'application prend jusqu'à 30 secondes pour démarrer. Pourquoi cela ferait-il une différence dans Mono?
Edit:
Chose intéressante, une façon de contourner ce problème est de déplacer tout le code de Application_Start dans un processus async séparé:
void Application_Start()
{
var t = new System.Threading.Thread(new ThreadStart(this.Async_Application_Start));
t.Start();
}
void Async_Application_Start()
{
... Lots of stuff going on here..
log('Async Application Start is done!'); // this actually gets logged, so the code DOES execute and end
}
Quel serveur web utilisez-vous et pouvez-vous fournir des informations sur votre webapp? – yojimbo87