c# - 在 Apache/mod_mono 上使用 MySQL 部署 ASP.NET MVC Internet 应用程序

标签 c# mysql asp.net-mvc apache mono

首先,我对所有这些东西都很陌生。

我使用 Windows 计算机和 Visual Studio 2013 Ultimate 作为开发环境,并希望使用 Apache/mod_mono 在 Linux 计算机上托管创建的 Web 应用程序。

Linux机器运行:

  • CentOS 版本 6.5(最终版)
  • 带有 mod_mono 的 Apache/2.2.15 (Unix)
  • Mono JIT 编译器版本 3.10.0(压缩包,2014 年 10 月 4 日星期六 16:22:21 UTC 2014)

我当前在 Linux 计算机上托管 2 个 ASP.NET 应用程序:

  1. monotest:使用MonoDevelop模板创建的MVC项目,主要用于测试apache配置。该应用程序工作正常(即使日志在重新启动 apache 时抛出错误)
  2. webappexample:一个 MVC3 项目,包含使用 Visual Studio 模板创建的 razor View 和 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

当我访问 webappexample 时,这是在 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-mono.conf 下 该文件应该引用 mod-mono 的版本 2 或 4

我认为你还应该检查你的 apache 站点/sites-available/.conf 的配置,我相信这个conf文件也有一些 mod_mono 引用,它们应该指向正确的版本。

关于c# - 在 Apache/mod_mono 上使用 MySQL 部署 ASP.NET MVC Internet 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26733176/

相关文章:

c# - 如何在C#中访问struct内部的函数

c# - 如何通过 [WebMethod] 返回数据表

mysql - 更改Identity SQL存储的错误(官方教程)

jquery - 添加 JQueryMobile 后 ASP MVC3 URL 出现问题

c# - 如何上传大于 25 mb 的视频 - C#、JavaScript

c# - 如何使用 NAudio 对波形文件执行 FFT

mysql - 如何将 “flatten”或 “collapse” 1D mysql表转换成2D?

php - 获取产品在购物车中的公司的电子邮件

mysql - 根据值插入重复记录而不使用游标

c# - 升级到 SignalR-2.0.0-beta2 时未生成/signalr/hubs