在Apache/mod_mono上部署带有MySQL的ASP.NET MVC Internet应用程序
本文关键字:ASP MySQL NET MVC 应用程序 Internet mod Apache mono 部署 | 更新日期: 2023-09-27 18:29:13
首先,我对所有这些东西都很陌生。
我使用带有Visual Studio 2013 Ultimate的Windows机器作为开发环境,并希望在使用Apache/mod_mono的Linux机器上托管创建的web应用程序。
Linux机器运行:
- CentOS 6.5版(最终版)
- Apache/2.2.15(Unix),带mod_mono
- MonoJIT编译器版本3.10.0(tarball 2014年10月4日星期六16:22:21 UTC)
我目前在Linux机器上托管2个ASP.NET应用程序:
- monotest:使用MonoDevelop模板创建的MVC项目,主要用于测试apache配置。这个应用程序运行良好(即使日志在重新启动apache时抛出错误)
- webappeexample:一个MVC3项目,使用Visual Studio模板创建了带有剃刀视图和MySQL数据库。此网站给出"500内部服务器错误"
当我重新启动Apache时,这个输出会打印在error_log:中
[Tue Nov 04 11:03:30 2014] [notice] SIGHUP received. Attempting to restart
mod-mono-server received a shutdown message
Missing method System.Configuration.IConfigurationSectionHandler::Create(object,object,XmlNode) in assembly /opt/mono/lib/mono/gac/System/4.0.0.0__b77a5c561934e089/System.dll, referenced in assembly /opt/mono/lib/mono/gac/System.Configuration/4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
Missing method System.Configuration.IConfigurationSectionHandler::Create(object,object,XmlNode) in assembly /opt/mono/lib/mono/gac/System/4.0.0.0__b77a5c561934e089/System.dll, referenced in assembly /opt/mono/lib/mono/gac/System.Configuration/4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
Missing method System.Configuration.ConfigurationManager::get_AppSettings() in assembly /var/www/html/webappexample/bin/System.Configuration.dll, referenced in assembly /opt/mono/lib/mono/gac/Mono.WebServer2/0.4.0.0__0738eb9f132ed756/Mono.WebServer2.dll
mod-mono-server received a shutdown message
[Tue Nov 04 11:03:31 2014] [notice] Digest: generating secret for digest authentication ...
[Tue Nov 04 11:03:31 2014] [notice] Digest: done
[Tue Nov 04 11:03:32 2014] [notice] Apache/2.2.15 (Unix) DAV/2 mod_mono/2.11 PHP/5.4.32 configured -- resuming normal operations
mod-mono-server4
mod-mono-server4
mod-mono-server4
Listening on: /tmp/mod_mono_server_monotest
Root directory: /var/www/html/mono_test
Exception caught during reading the configuration file:
System.MissingMethodException: Method not found: 'System.Configuration.IConfigurationSectionHandler.Create'.
at System.Configuration.ClientConfigurationSystem.System.Configuration.Internal.IInternalConfigSystem.GetSection (System.String configKey) [0x0000d] in /home/abuild/rpmbuild/BUILD/mono-3.10.0/mcs/class/System.Configuration/System.Configuration/ClientConfigurationSystem.cs:62
at System.Configuration.ConfigurationManager.GetSection (System.String sectionName) [0x00000] in /home/abuild/rpmbuild/BUILD/mono-3.10.0/mcs/class/System.Configuration/System.Configuration/ConfigurationManager.cs:159
at System.Configuration.ConfigurationManager.get_AppSettings () [0x00000] in /home/abuild/rpmbuild/BUILD/mono-3.10.0/mcs/class/System.Configuration/System.Configuration/ConfigurationManager.cs:173
at Mono.WebServer.Apache.Server.get_AppSettings () [0x00001] in /home/abuild/rpmbuild/BUILD/xsp-1368532016/src/Mono.WebServer.Apache/main.cs:213
at Mono.WebServer.Apache.Server+ApplicationSettings..ctor () [0x0002b] in /home/abuild/rpmbuild/BUILD/xsp-1368532016/src/Mono.WebServer.Apache/main.cs:63
mod-mono-server4
Listening on: /tmp/mod_mono_server_webappexample
Root directory: /var/www/html/webappexample
当我访问webappeexample时,这是在error_log:中
System.NullReferenceException: Object reference not set to an instance of an object
at Mono.WebServer.BaseApplicationHost.EndOfRequest (Mono.WebServer.MonoWorkerRequest mwr) [0x0002b] in /home/abuild/rpmbuild/BUILD/xsp-1368532016/src/Mono.WebServer/BaseApplicationHost.cs:141
at Mono.WebServer.ModMonoApplicationHost.ProcessRequest (Int32 reqId, System.String verb, System.String queryString, System.String path, System.String protocol, System.String localAddress, Int32 serverPort, System.String remoteAddress, Int32 remotePort, System.String remoteName, System.String[] headers, System.String[] headerValues, System.Object worker) [0x00175] in /home/abuild/rpmbuild/BUILD/xsp-1368532016/src/Mono.WebServer.Apache/ModMonoApplicationHost.cs:109
at (wrapper remoting-invoke-with-check) Mono.WebServer.ModMonoApplicationHost:ProcessRequest (int,string,string,string,string,string,int,string,int,string,string[],string[],object)
at Mono.WebServer.ModMonoWorker.InnerRun (System.Object state) [0x002a7] in /home/abuild/rpmbuild/BUILD/xsp-1368532016/src/Mono.WebServer.Apache/ModMonoWorker.cs:253
at Mono.WebServer.ModMonoWorker.Run (System.Object state) [0x00004] in /home/abuild/rpmbuild/BUILD/xsp-1368532016/src/Mono.WebServer.Apache/ModMonoWorker.cs:92
[Tue Nov 04 11:37:55 2014] [error] (70014)End of file found: read_data failed
[Tue Nov 04 11:37:55 2014] [error] Command stream corrupted, last command was -1
经过一些谷歌搜索,我发现了不少关于复制某些DLL的博客文章。。到目前为止,我已经记不清我做了什么,但还没有什么能解决我的问题。我还尝试过用mono编译器编译webappexample,这编译时没有任何警告/错误,但仍然不能解决我的问题。
有人能在这里提供一些见解或解决方案吗?
您是否检查了linux盒子中mod_mono的配置?也许mond_mono被配置为使用aspnet v2框架(.net v2,v3,v3.5),也许你的应用程序需要v4框架(.net v4,v4.5)
我现在无法访问linux盒子,但我相信conf文件位于/mods-available/mod-moon.conf下该文件应该引用mod mono 的版本2或版本4
我认为您还应该检查您的apachesite/sites-available/.conf的配置。我相信这个conf文件也有一些mod_mono引用,它们应该指向正确的版本。