.NET Web应用程序未在Apache下的Mono上运行 - 无法识别的属性' targetFramework'

时间:2014-02-20 23:44:07

标签: asp.net apache mono

我正在尝试使用Apache上的Mono在Linux上设置NuGet库。我遇到了一个典型的错误:

反序列化配置节编译时出错:无法识别的属性'targetFramework'。 (/app/www/nugetsrus.sys.company.net/Web.config第1行)。

然而,我尝试过的每一种解决方法都不起作用。我没有运行xsp4

我在使用Mono 3.2.6的CentOS 6.1上

我在VS 2012中构建了一个空的.NET 4.0 Web应用程序,并将nuget.server添加到其中。构建和发布,它在IIS中工作。我将文件夹复制到我的CentOS盒子,并尽可能地配置了Apache和Mono。

我确保在包含conf.d / * .conf之前我有User apache和group apache 如果我从Web.config中删除targetFramework 4.0行,我会收到内部服务器错误

不知道还有什么可以做或者在这里看单声道运行.NET 4.0应用程序。

1 个答案:

答案 0 :(得分:0)

我修好了。一个非常小的配置问题是问题。显然默认情况下,即使在mod_mono.conf文件中指定了mod-mono-server4,mod-mono-server2也会运行。您必须在Apache配置文件中为您尝试运行的网站指定mod-mono-server4。

我忽略了错误底部的文本,表明mono正在运行ASP.NET 2.0.50727.1433。由于我的Web应用程序是在.NET 4.0中构建的,显然您会遇到框架错误,因为2.0不知道该属性。那是因为mod-mono-server2正在运行。我不得不强制运行mod-mono-server4。

以下是我的Nuget.conf文件的相关部分:

<VirtualHost *:80>
DocumentRoot /app/www/nugetsrus.sys.company.net
MonoDebug nugetsrus.sys.company.net true
MonoSetEnv nugetsrus.sys.company.net MONO_IOMAP=all
MonoApplications nugetsrus.sys.company.net "/:/app/www/nugetsrus.sys.company.net"
MonoServerPath nugetsrus.sys.company.net /opt/mono/bin/mod-mono-server4 

最后一行是让它发挥作用的关键。我最初只是: MonoServerPath / opt / mono / bin / mod-mono-serve4,但它明确地将应用程序的名称放在其间使得它运行server4而不是server2,因此.NET 4.0而不是2.0

现在,它大部分时间都有效。如果我重新启动Apache,第一次尝试浏览它失败。在那之后,没关系。很奇怪。