其他新闻

其他新闻

linux建站asp(linux建立共享文件夹)

时间:2023-11-30 信途科技其他新闻
起因

对于刚刚有意向和已经行动将Asp.Net项目迁移到Linux服务器的小伙们,会碰到各种打击,常说的一句就是,我的项目在IIS运行的没问题呀,但放到Linux怎么就不行了呢!这是为什么呢?大体上是因为部分历史原因的元素,大多数问题还是因为我们没有跨平台的意识,在不经意间在使用了Windows系统的特性(等下详细说).

Asp.Net可以跨平台不是个新鲜的事情,只是我们不了解而已,最早接触Asp.Net跨平台是在13年,那会将Asp.Net WebForm运行在Linux还是有些麻烦,很多人都说玩玩就行了,你还指望上项目呀!那会还不知道Jexus是神马,第一次尝试的时候,Mono安装是必备的,当然全世界都知道的,其次就是安装Apache(没错),然后安装Httpd,最后安装xsp,麻烦吧!相对于现在是很麻烦了,最终还是很好的运行了.

现在要想将Asp.Net在Linux运行,大体上分两种老项目用Jexus来运行和新项目用Asp.Net Core开发用Kestrel Server运行.

Jexus是国内牛人宇内流云所写,使用CSharp基于Linux的epoll I/O复用,又针对Linux做了大量的优化,Jexus性能比Xsp好很多,且使用简单,操作方便,最贴心的是使用独立版的话,Jexus已经内置Mono,真是做到了开箱即用.

Kestrel Server是微软出品.在著名Libuv事件库上,用CSharp进行封装,很好的继承Libuv的特性,跨平台,如果不知道Libuv,那么可能听说过NodeJs,其实NodeJs底层也是Libuv.所以Kestrel Server在性能上是完全没问题.但只能运行Asp.Net Core项目.

TinyFox也是宇内流云所写,同样也是基于Libuv,但宇大重新封装了线程池,TinyFox主要运行基于Owin协议的项目(Jexus也支持基于Owin项目),如果你不知道的话,那要好好的百度一下,这里面有很多的事情.同时也是可以支持传统的Web项目(Asp.Net WebForm/MVC),是以适配器组件将Http请求信息(Owin的请求)转换为Asp.Net WebForm的请求信息进行运行.还有一个很大的优点是支持Socket,方便客户端进行通信.

不掰扯了,想要跨平台,都要摒弃使用系统独有的特性.假如说你使用Windows的特性,即使是Java项目中也不能好好的部署到Linux服务器.

Jexus开箱即用,使用也很简单,这里就不多说如何使用了,具体参考Jexus的readme文件,有中文介绍.

不依赖Windows特性

在项目引用的程序集,没有使用Windows系统独有的系统函数调用,如调用的kernel32.dll中系统函数.

进入正题,新建一个WebForm项目,当然MVC项目也可以的.

该项目是使用VS2017所建,当然VS2015应该相差不大.使用VS WebForm模板,看看项目中的文件.

asp.net webform项目 VS默认模板

如果看项目引用,简直是头皮发麻呀!我就想建一个项目,至于那么多引用吗?微软真是太贴心了,以至于这些成为我们项目跨平台的罪魁祸首.

将项目编译后,将生成的文件放到Linux(这里使用Jexus运行)先看看FileNotFoundException

asp.net. webform/mvc 发布到Linux遇到FileNotFoundException信息

Mono 5.0开始支持csc编译了,还没有运行在Mono 5.0测试过的,碰到这个问题,就在NuGet管理器中卸载Microsoft.CodeDom.Providers.DotNetCompilerPlatform和Microsoft.Net.Compilers.

来看看卸载前后的对比:

VS的WebForm模板有些引用造成无法在Linux运行的主要原因

说说模板中引用Microsoft.Web.Infrastructure.dll

在VS中发布的Microsoft.Web.Infrastructure.dll文件是不能跨平台的,是因为该库文件使用Windows的特性注册表,在KillBitHelper类中.所以在发布之后,要先把该文件删除掉,没事的,因为Mono很贴心给我们准备一个跨平台的Microsoft.Web.Infrastructure.dll.

Microsoft.Web.Infrastructure.dll这个模板引用的是无法在Linux运行的

Mono下有同名对应的动态库的,在将该程序集排除后,将剩下的程序集拷贝到Linux上就可以了.

WebForm项目中文件名问题

Linux系统对文件名大小写是区分的,如index.html和Index.html这两个文件名在Linux系统中是两个文件,这一点和Windows是完全不一样的.不管迁移老项目和新项目,最后对文件名进行统一,个人建议文件名统一小写处理.

早期Mono有一个配置MONO_IOMAP是可以在Linux不区分文件名大小写的,这是需要以性能为代价实现,是通过多次打开文件来实现的.

在Jexus配置也有MONO_IOMAP,随着Mono移除该配置,Jexus也不支持区分文件名大小写.

最后追加

文章主要内容是在2017年7月7日所写,那时Kestrel Server和TingyFox都是基于Libuv,现在Kestrel Server都不支持Libuv了,TinyFox是基于对应系统的Socket和IO复用(Windows IOCP/Linux Epoll)

项目需要迁移到Linux,又特别需要高性能的话,可以将在需要性能的地方,拆分为基于Owin的项目,

扫描二维码推送至手机访问。

版权声明:本文由信途科技转载于网络,如有侵权联系站长删除。

转载请注明出处https://www.xintukeji.cn/xintu/16132.html

标签: linux建站asp

相关文章

关键词快速排名系统源码(关键词快速排名软件)

问题描述:为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的电话与地址。设计散列表存储,设计并实现通讯录查找系统。1.基本要求(1)每个记录有下列数据项:电话号码、用户名、地址;(2)从键...

葫芦岛网络推广招聘(葫芦岛 招聘网 招聘)

葫芦岛网络推广招聘(葫芦岛 招聘网 招聘)

2022辽宁葫芦岛市事业单位报名时间 年辽宁葫芦岛事业单位报名时间为2022年8月6日(星期六)9时--8月11日(星期四)130分。葫芦岛市绥中县部分事业单位报名时间是2023年2月6日(周一)9时...

自助建站哪家好(海口服装自助建站哪家好)

相信很多跨境零售卖家及外贸出口企业同我们一样会看到,很多有外贸独立站建站需求的卖家同行们都在咨询和了解,比如作为独立站建站新手应该如何去选择建站系统?想自己做个跨境独立站商城,常见的一些自助建站哪个好...

外贸建站(外贸网站平台哪个好)

现在搭建一个外贸网站的门槛越来越低了,就算不会网站代码,你也可以快速建成一个专业的外贸网站。今天就和大家分享一下外贸网站建设的方法,以及一些注意事项。快速搭建一个专业的外贸网站一,搭建一个网站首要的一...

「上海360关键词排名推广方式」上海关键词排名优化价格

本文目录一览: 1、怎么推广360网站关键词快速排名 2、360搜索引擎怎么推广?具体怎么做 3、如何刷360引擎关键词快速排名 4、如何刷360移动关键词排名推广 5、360搜索推广...

关键词网站排名怎么提升(关键词网站排名)

网站优化买链接,SEO网站优化买外链。链接是长期优质的 没有做不上去的关键词,您无需到处购买链接 质量高:所有站点都是运营中的站点,非站群,垃圾站! 网站SEO优化买链接就来!(爱链接)http://...

现在,非常期待与您的又一次邂逅

我们努力让每一次邂逅总能超越期待

  • 效果付费
    效果付费

    先出效果再付费

  • 极速交付
    极速交付

    响应速度快,有效节省客户时间

  • 1对1服务
    1对1服务

    专属客服对接咨询

  • 持续更新
    持续更新

    不断升级维护,更好服务用户