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

在基于Linux的服务器上运行ASP.Net,asp.net,linux,mono,Asp.net,Linux,Mono,对于具有Java背景的开发人员,我也有兴趣探索使用ASP.NET工具/平台进行软件开发 Java web应用程序(.jsp和servlet)可以在许多服务器平台上运行 问题:一个.NET web应用程序能否在基于Linux的服务器上运行?考虑到无法使用Windows服务器托管web应用的情况 对于Linux上的ASP.NET,请签出 也就是说,数千个站点在Windows Server上运行时没有任何问题。任何操作系统配置不当的服务器都会受到攻击;Linux不会把你从一个糟糕的管理员手中拯救出来

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

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


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

对于Linux上的ASP.NET,请签出

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


因此,我想我开发ASP.NET应用程序的“最佳实践”应该是使用Windows Server 2008(可能是Web版)。并雇佣一名优秀的管理员。

您可以使用它在Apache/Linux上运行ASP.NET应用程序,但它在Windows下的功能有限。至于“他们”说Windows更容易受到攻击——这不是真的。在过去几年中,IIS的安全问题比Apache少,但无论是哪种情况,都要归功于盒子的管理——这两种操作系统都可以很容易地得到保护。现在的攻击点不是操作系统或web服务器软件,而是应用程序本身。

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


这取决于您使用的具体.NET技术。提供了一个用于运行ASP.NET站点的Apache模块(mod_mono),据我所知,它运行良好

尽管Mono不支持所有的.NETAPI,尤其是WPF(我不记得还有WCF),但它确实为框架的其他大部分提供了良好的支持


如果您是从零开始的,特别是希望以非Windows服务器为目标,那么确保您的项目与Mono协同工作将是一个很好的目标。但是,如果您需要Mono不支持的特定API或语言功能,则需要使用Windows服务器进行部署。这是一个设计时/架构选择,应该占主导地位

是的,我们可以。熟悉并阅读以开始使用。

现在,days.Net可以在多种平台上运行,如linux、Mac os等。 但是mono并不是完全独立于平台的,因为需要在另一个操作系统中部署.NET 所以它不像java平台独立

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

Mono在月光下并没有完全成功(SilverLight在.NET中)。不仅仅是研究还在进行中

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


更多详情。

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


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

你可能想考虑这个指南,帮助Windows开发人员将他们的代码移植到MUNO/Linux:


我可以凭经验说话。即使你的ASP.net网站只使用Mono支持的.net库,如果它超出了Hello World,你也很难让它运行

您不必重新编写太多代码,但您将花费数小时/数天/数周的时间来处理mod_mono/xsp/apache配置、文件权限、错误处理以及大型网站中的所有小问题。(准备好花大量时间询问服务器故障:))


问题是很多人不在ASP.net网站上使用Mono,因此没有那么多人报告错误,所以很多小错误会长期得不到修复。

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

微软已经正式发布了它的开源软件,并将其部署到Linux和Mac上。它仍然非常新,但依赖于mono的最新版本,因此当前需要您编译
mono框架
,但随着各种linux发行版发布mono的更新版本,我怀疑它会更容易访问

此信息可能会有点不稳定,并且会因更改而更新

2017年10月11日更新ASP.NET CORE
  • asp.net vnext现在称为
  • 在Microsoft中被视为高度优先事项,部分原因是它与和一起使用
  • 由于以下原因,它与现有的.net库更加兼容
  • 与其他技术堆栈(如go和node.js)相比,它更具吸引力
    • 是GitHub上.NET的官方主页。从微软和社区中找到许多.NET OSS项目是一个很好的起点,包括许多是.NET基金会的一部分。


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

      现在,您可以使用Visual Studio将ASP.NET 5应用程序发布到Linux上的Docker。请参阅下面斯科特·哈塞尔曼的帖子


      由于技术不断发展,而且这个问题在谷歌排名第一,我们需要在新的asp.net核心之外加入,这是对以下内容的完全重写:

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


      任何东西都可能是脆弱的。任何东西都是不安全的,除非它关闭并断开与网络的连接network@blowdart,现在来看看facebook在apache上运行的情况,防病毒问题如何。。windows需要防病毒软件。。我认为这会增加ser的成本