linux+apache能运行asp.net程序吗?应该如何设置?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux+apache能运行asp.net程序吗?应该如何设置?相关的知识,希望对你有一定的参考价值。

谢谢大家的帮忙。

LINUX+APACHE主要用来是跑php的,跑ASP.NET需要在WINDOWS环境里装IIS

由于公司的产品在新的版本中,需要考虑一些新的部署方式,所以又抽空关注了一下.NET跨平台的一些解决方案。虽然Mono Project对基于.NET开发的人来说都不陌生,不过由于Mono是比较狭义的跨平台(因为它是OS级别的)概念。而从广义的角度来说,使用不同的Web Server也可以算是一种垮平台。

缘起是由于IIS的口碑实在太滥,以至于不少的关键应用场景明文禁止安装和使用IIS。而从ASP.NET的执行原理来看,它是通过一个Web Server处理tcp请求,然后把对ASPX执行和呈现交于使用.NET实现一个托管环境来进行的。所以使用Apache是目前最经济的IIS替代品,而同时在Apache的sub-project正好有一个支持ASP.NET的模块,并且已经开发到了2.0版本。我所配合使用的版本是Apache HTTP Server 2.0.55和mod_aspdotnet 2.0.0。安装非常的简单,两个程序都是msi安装包,一路next就搞定了。完了再在安装目录/htdocs下建一个目录,如:active。

不过其中有两个小问题需要注意:

一是:在安装Apache HTTP Server的时候,如果我们机器上的80端口已被占用,需要选使用8080端口来安装那个选项,当然这个端口是可以在httpd.conf文件里修改的。只是使用这种安装方式安装好以后需要手动的启动apache2服务,使用cmd命令并进入apache安装目录,如:D:\Program Files\Apache Group\Apache2\bin,运行:apache -k install。

二是:在配置aspdotnet_module的时候,我们需要在httpd.conf文件中追加以下清单: #asp.net
LoadModule aspdotnet_module "modules/mod_aspdotnet.so"
AddHandler asp.net asax ascx ashx asmx aspx axd config cs csproj licx rem resources resx soap vb vbproj vsdisco webinfo
<IfModule mod_aspdotnet.cpp>
# Mount the ASP.NET example application
AspNetMount /active "J:/Working/BIVSS"
# Map all requests for /active to the application files
Alias /active "J:/Working/BIVSS"
# Allow asp.net scripts to be executed in the active example
<Directory "J:/Working/BIVSS">
Options FollowSymlinks ExecCGI
Order allow,deny
Allow from all
DirectoryIndex Default.htm Default.aspx
</Directory>
# For all virtual ASP.NET webs, we need the aspnet_client files
# to serve the client-side helper scripts.
AliasMatch /aspnet_client/system_web/(\d+)_(\d+)_(\d+)_(\d+)/(.*) "C:/Windows/Microsoft.NET/Framework/v$1.$2.$3/ASP.NETClientFiles/$4"
<Directory "C:/Windows/Microsoft.NET/Framework/v*/ASP.NETClientFiles">
Options FollowSymlinks
Order allow,deny
Allow from all
</Directory>
</IfModule>

本来这个配置文件很简单,还有详细的注释。不过一定要注意上面的命令(非#开头的行),都需要写在一行上,如果是从网页上copy要特别的小心,特别是AddHandler和AliasMatch这两句容易被断成两行,那样启动apache服务就会失败,并且提示非常简单,根本不会告诉你配置文件加载错误。

目前,这个mod_aspdotnet模块最大的问题是在认证支持上的不足,比如windows和form都还不能支持,不过开源的东西更新还是很快的。由于使用Microsoft .NET Framework作为CLR,开发更新的压力和Mono不在一个数量级上,相信很快就能有对页面认证的较好支持。
参考技术A Linux+Jexus可以很好地运行ASP.NET程序.

我可以在 .net 4 中部署我的 ASP.NET MVC 4 应用程序吗

【中文标题】我可以在 .net 4 中部署我的 ASP.NET MVC 4 应用程序吗【英文标题】:Can I deploy my ASP.NET MVC 4 application in .net 4 【发布时间】:2012-03-21 20:10:51 【问题描述】:

我想知道 IS ASP.NET MVC 4 应用程序可以在 .NET 4 服务器上运行。

我正在尝试部署我的 MVC4 应用程序,但出现了错误。

500 - 内部服务器错误。 你的资源有问题 正在寻找,无法显示。

我的目标是 .net 4 框架,但我仍然遇到此错误。我不确定服务器会发生什么。我正在尝试查看其他帖子,但我没有找到任何可以明确 MVC 4 可以在 .net 服务器上运行的帖子。

【问题讨论】:

“.NET 4 服务器”是什么意思?您是否尝试在自制的服务器应用程序中运行它,而不是做正常的事情并在 IIS 中运行它? @JoeWhite 表示具有 .net 4 应用程序的基于窗口的服务器也可以运行 MVC 4。如果它造成混淆,请编辑我的问题。 500 错误可能意味着几乎任何错误...您可以查看服务器的事件日志吗? @HenkHolterman 实际上我从某人那里得到了一个服务器来测试我自己的脚本。我已经安装在子域/目录。 服务器上是否安装了MVC4?如果没有,您将需要按照haacked.com/archive/2011/05/25/bin-deploying-asp-net-mvc-3.aspx 此处的说明进行 bin 部署。这适用于 MVC3,但我认为它应该与 4 相同。此外,如果您发布堆栈跟踪信息也会有所帮助。 【参考方案1】:

是的。 ASP.Net MVC 4 将在 ASP.Net 4 和 ASP.Net 4.5 上运行。我在 ASP.Net 4 上运行一个站点,它也在this blog post by Scott Gu 中得到确认。这假设您的应用程序中没有针对任何新的 4.5 功能。

如果服务器尚未安装所需的 MVC 4 .dll 文件,请确保将它们复制到 bin 文件夹中。 This post by Phil Haack 解释了如何 bin 部署版本 3。Hanselman has a similar article。您需要检查 the version 4 release notes 以获取当前所需的 .dll。

如果您可以提供一些额外的详细信息,我们或许可以提供更具体的答案,并让我们知道您正在运行的 IIS 和 Visual Studio 版本。

【讨论】:

现在有 NuGet 包可以为您解决问题,对吧?【参考方案2】:
    右键单击您的 mvc4/webapi 项目,选择“添加库包引用...”项,选中“ASP.NET MVC”复选框。 在您的服务器上安装 DotNet Framework 4 Client Profile。因为引用项“System.Net.Http”目标框架是 .net4 客户端配置文件。 将您的 mvc4 项目发布到您的服务器 享受......:)_

【讨论】:

【参考方案3】:

Razor 2 是 WebPages/MVC 框架下一波浪潮的一部分,因此它 将需要 MVC4。没有什么能阻止您使用我们的 将 Razor 2 插入 MVC3 的开源代码,但不受支持 场景。

请记住,MVC 4 可以在 .NET 4.0 上运行,并且不需要 .NET 4.5!

ASP.net mvc programmer blog

【讨论】:

不,它不需要 4.5,直到你使用 4.5 的功能,如捆绑/异步/等待,然后你就炸了:) @AdamTuliper,好的。但这不仅仅是mvc4...没有4.5就不能使用async,它与asp.net或asp.net-mvc-4无关 当然可以 - mvc4 源代码中使用了异步,因此它必须与 mvc4 和 .net 4.5 一起使用,但我们都知道最终结果 - 如果你想要,你显然需要 4.5,如果不是,你很高兴。 . 仅供参考,如果您引用 Microsoft.Bcl.Async NuGet 包,MVC4+.NET4.0 中仍然可以使用异步。 (不过需要 VS2012)

以上是关于linux+apache能运行asp.net程序吗?应该如何设置?的主要内容,如果未能解决你的问题,请参考以下文章

在Linux环境下使用Apache部署ASP.NET Core

ASP.NET 核心上真的需要反向代理吗?

将 .aspx 网站转换为 ASP.NET Core

c#一个解决方案里包含.netcore3.1和asp.net两个项目,能正常发布iis吗?

在Linux上以服务的方式运行ASP.NET Core站点

我可以将我的 asp.net 应用程序移动到云端吗?