我正在尝试在Mono 2.10.8.1之上托管ASP.NET MVC4 RC项目。我第一次访问应用程序时遇到以下异常:
Missing method System.Web.Security.FormsAuthentication::get_IsEnabled() in assembly /usr/lib/mono/gac/System.Web/4.0.0.0__b03f5f7f11d50a3a/System.Web.dll, referenced in assembly /tmp/root-temp-aspnet-0/eaee30a1/assembly/shadow/5cf10065/40974e7d_1c664e18_00000001/System.Web.Http.WebHost.dll
根据http://www.mono-project.com/Compatibility,这应该在Mono 2.10.8中实现。 Microsoft将该属性列为.NET Framework 4.0:http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.isenabled.aspx
是否存在某种解决方法,或者目前无法在Mono上主持MVC4?
我应该注意到,在Apache2上使用XSP4和mod_mono时,我遇到了这个问题。
单声道版本如下:
Mono JIT compiler version 2.10.8.1 (Debian 2.10.8.1-1~dhx1~lucid1)
Copyright (C) 2002-2011 Novell, Inc, Xamarin, Inc and Contributors. www.mono-project.com
TLS: __thread
SIGSEGV: altstack
Notifications: epoll
Architecture: x86
Disabled: none
Misc: softdebug
LLVM: supported, not enabled.
GC: Included Boehm (with typed GC and Parallel Mark)
答案 0 :(得分:9)
TL / DR:仍然不建议在Mono下运行MVC4,而是运行MVC3。
长篇小说:在Mono 2.10.x发布时,微软还没有完全发布ASP.NET堆栈作为开源(Razor是仍然是封闭源代码的组件之一)。
最近微软终于开源了完整的堆栈,Mono将它包含在他们的树中,但这只发生在master分支中(只有Mono 2.11.x的预览版包含它)。此外,异步API尚未在Mono中实现(而MVC4依赖于它们),因此最好的选择是使用MVC3,现在使用Mono 3.0.1版本。
答案 1 :(得分:3)
现在可以,并且在当前的单声道版本和使用NuGet时几乎是直截了当的。 MS在NuGet上放置MVC4的事实有所帮助。我已经为.Net 4& github https://github.com/chrisfcarroll/AspNetTemplatesForMono上的.Net 4.5。有几个陷阱,但它们在笔记中得到解决。
答案 2 :(得分:1)
您需要从源
编译新的XSPgit clone git://github.com/mono/xsp.git
cd xsp
./autogen.sh --prefix=/opt
make
sudo make install
此版本需要足够的权限才能运行sudo...
,否则您将收到System.IO.FileNotFoundException
消息。
然后将这些行添加到您的web.config文件
<system.web>
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="System.Web.Helpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</assemblies>
</compilation>
消除CS0234: The type or namespace name Helpers does not exist in the namespace System.Web.
例外。
然后从bin文件夹中删除这些程序集(如果这些程序集是从Windows计算机复制的)
Microsoft.Web.Infrastructure.dll
System.Net.Http.dll
System.Net.Http.Formatting.dll
System.Web.Http.dll
System.Web.Http.WebHost.dll
这将删除Missing method System.Web.Security.FormsAuthentication::get_IsEnabled()
例外和许多其他could not load type xyz
例外情况。
答案 3 :(得分:0)
请按照以下链接成功在Mono上主持MVC 4应用程序。
http://www.bgsoftfactory.net/run-asp-net-mvc-4-with-mysql-on-linux/
它在Linux服务器上提供逐步配置。
答案 4 :(得分:0)
如果您不需要,请删除对 System.Web.Http 和 System.Web.Http.Host 的引用(WebApi库)。 您可能需要删除 App_Start文件夹中的 WebApiConfig.cs 和 Global.asax 中的引用。 但之后,您的项目将无任何其他问题。