Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
528 views
in Technique[技术] by (71.8m points)

asp.net - Running Mono 3.2.0 with .NET MVC 4

I am trying to get Mono 3.0 setup to run MVC4 sites under .NET 4 and .NET 4.5. I've been working through various errors, what can I do to get it up and running?

Server Configuration

  • CentOS 5
  • Apache 2.2.3
  • 3.2.0 (tarball Sun Jul 28 00:57:40 UTC 2013); ASP.NET Version: 4.0.30319.17020 2013)
  • Latest XSP from git, as of the time of this post

Apache/Mono Config

MonoServerPath "/usr/local/bin/mod-mono-server4"

/usr/local/bin/mod-mono-server4 contents:

#!/bin/sh
exec /usr/local/bin/mono $MONO_OPTIONS "/usr/local/lib/mono/4.5/mod-mono-server4.exe" "$@"

Update

The crux of the problem is that Mono doesn't ship with MVC4 which the site requires. It still has the MVC3 dlls, yet it has the Razor 2 dlls but not the Razor 1 dlls which MVC3 wants to sue.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Everything you need is now available within the Mono framework or on NuGet. I've created downloadable template for MVC4 for .Net 4.0 and .Net 4.5 and some notes on resolving the issues:

http://www.cafe-encounter.net/p1510/asp-net-mvc4-net-framework-version-4-5-c-razor-template-for-mono-on-mac-and-linux

The steps from the blog post are:

  • git clone github.com/chrisfcarroll/AspNetTemplatesForMono/Mvc4CSharpRazorFx45Intranet NB This github repo includes all the required dlls in case you don’t have NuGet working, so it’s an oversized download.
  • Open the solution in Xamarin Studio. It almost works out-of-the-box. The one thing you have to do is choose one of these 2 steps to make it work:

Either delete Microsoft.Web.Infrastructure.dll from the bin directory and from the project

Or, from the command line:

sudo mkdir /Library/Frameworks/Mono.framework/Versions/3.2.5/etc/mono/registry
sudo chmod g+rwx /Library/Frameworks/Mono.framework/Versions/3.2.5/etc/mono/registry

(replacing 3.2.5 with your mono version, which you get at the command line with mono --version);

The Microsoft.Web.Infrastructure.dll is required on .Net on Windows, so deleting it is not the simpler approach if you want cross-platform deployability


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...