首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用.NET MVC 4运行Mono3.2.0

用.NET MVC 4运行Mono3.2.0
EN

Stack Overflow用户
提问于 2013-07-27 17:38:14
回答 2查看 10.6K关注 0票数 5

我正在尝试使Mono3.0安装程序在.NET 4和.NET 4.5下运行.NET站点。我一直在处理各种错误,我能做些什么来让它启动并运行呢?

服务器配置

  • CentOS 5
  • Apache 2.2.3
  • 3.2.0 (tarball Sun Jul 28 00:57:40 UTC 2013年);ASP.NET版本: 4.0.30319.17020 2013年
  • 来自git的最新XSP,在本文发布时

Apache/Mono Config

代码语言:javascript
复制
MonoServerPath "/usr/local/bin/mod-mono-server4"

/usr/local/bin/mod-mono 4内容:

代码语言:javascript
复制
#!/bin/sh
exec /usr/local/bin/mono $MONO_OPTIONS "/usr/local/lib/mono/4.5/mod-mono-server4.exe" "$@"

更新

问题的症结在于Mono没有提供站点所需的MVC4。它仍然有MVC3 dll,但是它有Razor 2 dll,但没有MVC3想起诉的Razor 1 dll。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-28 15:36:49

成功

如果您想在Mono上运行MVC4,您需要使用一些此时Mono不提供的Microsoft。

注意--粗略地看一下Mono源代码,MC4源代码中似乎有一些在3.2.0构建中不存在的方法和类。可能有一些特征被破坏了。我正在运行的站点对于所有意图和目的来说都是一个针对最新dlls构建的MVC3站点。

Microsoft DLL复制

  • System.Web.Abstractions - 4.0
  • System.Web.Helpers - 2.0
  • System.Web.Mvc - 4.0

一旦复制了dll,如果仍然有问题,如果上面的修复不起作用,您可能需要做一些检测工作。如果您收到一条错误消息说Mono找不到DLL,这通常是以下三个原因之一:

Troubleshooting

  1. 是没有dll的??您可以尝试使用Microsoft版本的DLL。

  1. 当正确的DLL安装在GAC或项目文件夹中时,它正在寻找较旧版本的DLL--项目中的程序集可能在某个地方引用该版本。您可以使用绑定重定向强制使用特定的版本。

  1. 它仍然找不到dll --将程序集添加到web.config的编译/程序集部分。

  1. 你得到的是“找不到搜索的视图.”message --如果该特定视图文件夹中的任何视图存在编译错误,那么您将收到此消息。
票数 1
EN

Stack Overflow用户

发布于 2014-01-13 23:24:31

您所需的一切现在都可以在Mono框架中或在NuGet上使用。我为MVC4为.Net 4.0和.Net 4.5创建了可下载的模板,并就如何解决这些问题做了一些说明:

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

博客文章中的步骤如下:

  • git克隆github.com/chrisfcarroll/AspNetTemplatesForMono/Mvc4CSharpRazorFx45Intranet NB这个github包含所有必需的all,以防您没有NuGet工作,所以它是一个超大的下载。
  • 在Xamarin Studio中打开解决方案。它几乎是从盒子里出来的。你必须做的一件事是从这两个步骤中选择一个来让它发挥作用:

从bin\目录和项目中删除Microsoft.Web.Infrastructure.dll

或者,从命令行:

代码语言:javascript
复制
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

(将3.2.5替换为您的单一版本,您可以在命令行中得到它的单版本);

Microsoft.Web.Infrastructure.dll在.Net上是必需的,所以如果您想要跨平台部署,删除它并不是一种更简单的方法。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17900677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档