ASP.NET如何移置到Linux上?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASP.NET如何移置到Linux上?相关的知识,希望对你有一定的参考价值。

在XP系统上开发的ASP.NETWEB应用程序如何移置到Linux系统的服务器上?

参考技术A 好像不能移置;
也没有这个必要,asp.net就是微软的东西,为什么要放在linux上,再说即使放在上面,跑起来性能也有问题啊,搞不明白你为什么要这么做。
另外,我的确听说过使用第三方的工具可以放在linux下跑的,但没有亲自试过,因为我认为没有任何价值
参考技术B Jexus for linux
在linux上装这个,
.net 就能在上面用了
参考技术C 环境:
openSuSE,
mono,
xsp2,mod_mono,apache2,moma
说明:xsp是mono自带的一个简单的web服务器,apache则是一个功能强大的web服务器(http服务器),mod_mono是一个模块用于apache(apache是模块化设计),关于apache后面会详细介绍。
英文资料是这样说的:
Mod_Mono
is
an
Apache
1.3/2.0/2.2
module
that
provides
ASP.NET
support
for
the
web's
favorite
server,
Apache
(
http://httpd.apache.org).XSP
is
a
standalone
web
server
written
in
C#
that
can
be
used
to
run
your
ASP.NET
applications
with
minimal
effort.
配置过程:
之前在openSuSE的虚拟机上运行其自带的实例(桌面上的ASP.NET.Source文件夹,里面有一个index.html文件,算是个帮助文档),实例代码放到/srv/www/htdocs路径上,在浏览器输入URL:http://localhost/directoryname/page.aspx结果有些实例可以运行有些则不可以,而且还以为在Visual
Studio
2005上开发的程序直接放到那个路径上就可以直接运行,结果不行,错误提示应该是说找不到路径。
那些不能运行的实例可能由于虚拟机的问题,所以就用一台直接安装上openSuSE系统,果然实例都可以运行,但自己在Visual
Studio
2005上做的程序还是不行。分析原因得出:当初想在Visual
Studio
2005上做的程序是不是不能直接拿到Linux上用而还要做些什么修改之类(实际上并不是这样),/srv/www/htdocs是用于apache服务器的路径,要做相应的配置(一头雾水)。所以就用mono自带的web服务器xsp,mono的官方网站就有介绍包括用法,
http://www.mono-project.com/XSP,具体命令和执行如下。#
cd
路径
路径
#
xsp2
Listening
on
address:
0.0.0.0
Root
directory:
路径
Listening
on
port:
8080
Hit
Return
to
stop
the
server.
浏览器输入URL:http://localhost:8080/page.aspx
值得注意的是C#1.0用xsp而C#2.0就用xsp2。结果用vs2005做的一个小程序可以顺利运行,用Production_System系统做测试时一般页面正常显示但BillBoard的页面就不能显示,没想到解决办法就尝试用apache。
有关apache安装和配置的中文资料有很多,但提及到用于.net的并没多少,只有零星的一些,所以只好先熟悉一下如何配置apache服务器。比较好的资料有Red
Hat
Linux
9网络服务的第7章配置Apache服务器和Apache
HTTP
Server
Version
2.2
文档。最后结合
http://www.mono-project.com/Mod_mono或http://gonzalo.name/blog/files/mod_mono.html的资料完成配置。下面写出具体如何配置。主要是配置apache2文件夹里的httpd.conf文件,直接右击选Open
with
“gedit”打开进行配置比较方便,当然也可以用命令来配。附上httpd.conf文件的中文翻译
http://blog.csdn.net/linuxnote/archive/2004/08/23/82289.aspx。1、在httpd.conf文件加入,把mod_mono模块包含到apache里
Include
etc/apache2/conf.d/mod_mono.conf
2、在mod_mono.conf文件的节点里加入
LoadModule
mono_module
/usr/lib/apache2/mod_mono.so
这个用于C#2.0
MonoServerPath
/usr/bin/mod-mono-server2
3、在httpd.conf文件添加如下配置,好像代码只能放在xsp/test目录下,原因不明,以后再研究。
Alias
/test
"/usr/lib/xsp/test"MonoApplications
"/test:/usr/lib/xsp/test"<Location
/test>SetHandler
monoAllowOverride
NoneOrder
allow,denyAllow
from
all</Location>4、保存文件然后重启服务器,命令如下,注意apache2也是用于C#2.0。
#
service
apache2
restart
5、打开浏览器输入http://服务器IP/test/index.aspx,会看到XSP的欢迎页面(这只是xsp上的测试实例用于apache的应用,如果要用于自己的开发的项目还要做些调整)。
6、将开发的源码文件放到/test:/usr/lib/xsp/test下,假设目录为/usr/lib/xsp/test/Production_System,其主页文件为Login.aspx,访问地址http://IP/test/Production_System/Login.aspx,奇怪的是此时报页面错误.没办法了,修改httpd.conf,将test虚拟目录直接指到这里(注意:发现这里目录名字不能有”_”符号,所以下面就去掉了)。
Alias
/test
"/usr/lib/xsp/test/ProductionSystem
"MonoApplications
"/test:/usr/lib/xsp/test/ProductionSystem
"<Location
/test>SetHandler
monoAllowOverride
NoneOrder
allow,denyAllow
from
all</Location>访问http://IP/test/Login.aspx正常显示,至于为什么报页面错误,还不知道是啥原因。而之前在xsp上不能显示的BillBoard页面在这里可以显示(还有些细节的问题等待解决),至于原因有待研究。最后整个Production_System看起来移植到Linxu是可行的,但要完美的运行起来还有细节问题要解决,而用moma测了一下Production_System的dll文件也出现了一些issues,例如外部调用dll问题。
整个的配置过程就是这样,有点乱,其中很多的问题没解决。看起来在Linux上安装和配置软件是件复杂的事情,有待继续研究。
补充:指定任意路径的项目和令mod_mono处理多个程序
Alias
/test
"/usr/lib/xsp/test/ProductionSystem"Alias
/
Hello_Mono
"/usr/mypages/Hello_Mono"MonoApplications
"/test:/usr/lib/xsp/test/ProductionSystem"MonoApplications
"/Hello_Mono:/usr/mypages/Hello_Mono"<Location
/test>SetHandler
monoAllowOverride
NoneOrder
allow,denyAllow
from
all</Location><Location
/
Hello_Mono>SetHandler
monoAllowOverride
NoneOrder
allow,denyAllow
from
all</Location>

Azure 云服务上的 Asp.Net Core MVC?

【中文标题】Azure 云服务上的 Asp.Net Core MVC?【英文标题】:Asp.Net Core MVC on Azure Cloud Services? 【发布时间】:2016-10-05 16:26:52 【问题描述】:

关于 Asp.Net Core 1.0 及其跨平台特性的文章很多。我知道可以将它部署到 Linux、OSX、Windows。我已经阅读了很多关于如何做到这一点的分步文章。但我仍然不知道如何将其发布为 Azure 项目中的云服务 Web 角色。

我有一个庞大的分布式系统,包括 Web 角色、Worker 角色和 Cache Worker 角色。想到 Asp.Net Core 1.0,我遇到了下一个问题:

    是否可以将 Asp.Net MVC Core 站点部署为 Azure 项目的 Web 角色?或者我应该在 Worker Role 上托管它? 是否有现成的适用于 Linux 的 Azure 模拟器?换句话说,如果我决定在 Linux 上迁移和托管我的系统,如何使用这种“跨平台”调试我的分布式系统?

【问题讨论】:

你读过这篇文章docs.asp.net/en/latest/tutorials/…和visualstudio.com/en-us/docs/release/examples/azure/…吗? @douglas-thomas,是的。两者都是关于将 Azure 发布为站点或 Web 应用程序。但我说的是云服务(网络角色) 还想将 Asp.Net 核心部署到 Web 角色.. 现在是 .Net Core 2.0,还没有 Web 角色支持……Web 应用或 Service Fabric 【参考方案1】:

是的,这是可能的,但需要一些技巧: https://oren.codes/2017/10/16/using-asp-net-core-with-azure-cloud-services/

附言。你可以在这里投票支持这个功能:https://feedback.azure.com/forums/34192--general-feedback/suggestions/35096002-support-hosting-asp-net-core-in-cloud-services

【讨论】:

以上是关于ASP.NET如何移置到Linux上?的主要内容,如果未能解决你的问题,请参考以下文章

win7+iis7.5+asp.net下 CS0016: 未能写入输出文件“c:WindowsMicrosoft.NETFrameworkv2.0.50727Temporary ASP.NE

ASP.NE网站发布注意事项

跟我学ASP.NET MVC之十一:URL路由

如何有效地将巨大的 sql 表加载到 asp.net 应用程序内存中以进一步迭代它?

理解ASP.NET Core

在 asp.net 和 Join 语句中连接到 Access 数据库