在基于Linux的服务器上运行ASP.Net

时间:2009-07-12 15:01:43

标签: asp.net linux mono

对于具有Java背景的开发人员,我也有兴趣使用ASP.NET工具/平台探索软件开发。

Java Web应用程序(.jsp和servlets)可以在许多服务器平台上运行。

问题:.NET Web应用程序是否能够在基于Linux的服务器上运行?考虑到无法使用Windows服务器托管Web应用程序的情况。

13 个答案:

答案 0 :(得分:83)

所以我知道这是一个较老的问题,但我认为这可能是一个更新的答案。

微软已正式发布asp.net vnext及其开放源代码,可部署到Linux和Mac。它仍然很新,但依赖于最新版本的单声道,因此目前需要你编译mono-framework,但我及时怀疑它将更容易访问,因为各种Linux发行版发布更新版本的单声道。 This is a how to setup guide

此信息可能有点不稳定,更新是由于更改。

更新ASP.NET CORE 11/10/2017

答案 1 :(得分:66)

这取决于您使用的特定.NET技术。 Mono Project为运行ASP.NET站点提供了一个Apache模块(mod_mono),从我收集的内容中它运行良好。

但是,Mono并不支持所有的.NET API - 特别是WPF(也可能是WCF,我不记得了) - 但它确实为框架的其他部分提供了很好的支持。

如果您从头开始并且特别想要定位非Windows服务器,那么确保您的项目与Mono一起工作将是一个很好的目标。但是,如果您需要Mono不支持的特定API或语言功能,则需要使用Windows服务器进行部署。这是一个设计时/建筑选择应该在前面。

答案 2 :(得分:22)

您可能需要考虑本指南,以帮助Windows开发人员将其代码移植到Mono / Linux:

Guide: Porting ASP.NET Applications - Mono

答案 3 :(得分:12)

我可以从经验中说出来。即使您的ASP.net网站仅使用Mono支持的.NET库,如果它超出Hello World,您将很难运行它。

您不必重写大量代码,但是您将花费数小时/数天/周来处理mod_mono / xsp / apache配置和文件权限以及错误处理和所有小问题的小问题网站。 (准备花很多时间在serverfault上问问题:))

问题是很多人不使用Mono用于ASP.net网站,所以没有多少人报告错误,所以很多小错误的东西长时间都没有修复。

答案 4 :(得分:10)

现在,您可以使用Visual Studio将ASP.NET 5应用程序发布到Linux上的Docker。请参阅Scott Haselman的以下文章

http://www.hanselman.com/blog/PublishingAnASPNET5AppToDockerOnLinuxWithVisualStudio.aspx

答案 5 :(得分:10)

由于技术发展并且这个问题在谷歌排名第一,我们需要在mono新的asp.net核心之外加入,这是对asp.net to run for production in Linux and Windows and for development for Linux, Windows and Mac的完全重写:

  

您可以跨平台开发和运行ASP.NET核心应用程序   Windows,Mac和Linux。 ASP.NET Core是GitHub的开源软件。

答案 6 :(得分:5)

是的,我们可以。熟悉Mono Project并阅读this article即可开始使用。

答案 7 :(得分:4)

对于Linux上的ASP.NET,请查看Mono

也就是说,数千个站点在Windows Server上运行没有任何问题。配置不当的服务器与任何操作系统都将容易受到攻击; Linux不会让你从一个糟糕的管理员那里救出来。

所以我认为我的“最佳实践”用于部署ASP.NET应用程序将使用Windows Server 2008(可能是Web版本)。聘请一位优秀的管理员。

答案 8 :(得分:4)

您可以使用Mono在Apache / Linux上运行ASP.NET应用程序,但是它在Windows下的功能有限。至于“他们”说Windows更容易受到攻击 - 事实并非如此。 IIS在过去几年中遇到的安全问题较少,但在任何一种情况下都归结为盒子的管理 - 两种操作系统都可以轻松保护。目前,攻击点不是操作系统或Web服务器软件,而是应用程序本身。

答案 9 :(得分:3)

dotnet是GitHub上.NET的官方主页。从Microsoft和社区中找到许多.NET OSS项目是一个很好的起点,包括许多属于.NET Foundation的项目。

这可能是支持Linux的良好开端。

答案 10 :(得分:2)

现在很多天.Net在多个平台上运行,如linux,Mac OS等。 但是mono不是完全独立于平台的,因为要在另一个操作系统中部署.NET 第三方软件。所以它不像java平台独立。

Mono在不同的平台上运行,因为JIT存在于不同的操作系统中。

Mono在月光下并不完全成功(.NET中的银光)。不仅仅是研究正在进行中。

Mono使用XSP2服务器或apache。一些大公司正在使用这个项目,一些机器人项目也在单声道上运行。

有关详情http://www.mono-project.com/Main_Page

答案 11 :(得分:1)

Novell的Mono项目允许您在Apache上运行ASP.Net。

http://www.mono-project.com/Main_Page

答案 12 :(得分:1)

Mono项目是您的最佳选择。然而,它有很多陷阱(例如某些领域的API支持不完整),并且它在法律上是灰色的(像Richard Stallman这样的人嘲笑使用Mono,因为微软可能会通过使用其专利权来降低Mono,但是那是另一个故事。)

无论如何,Apache通过一个模块支持.NET / Mono,但是上次我检查Debian提供的版本时,它只提供了Perl语言支持;我不能说它是否已经改变,也许其他人可以在那里纠正我。