第一个 Asp.Net vNext 应用程序

要说免费的虚拟主机的话,最好的服务商应该就是Microsoft Azure(不是Windows Azure由世纪互联运营),提供免费的1GB .NET/Java/Python/Php空间,日流量有限制可是不算过高。免费的版本不能绑域名,因此你得用重定向或者DNS服务商提供的隐式跳转服务。git

早起的Microsoft Azure并不提供免费的SQL数据库,而号称免费的MySQL数据库总是建立不了实例,这就比较尴尬了,因此只能用Sqlite之类的数据库来跑,鉴于这个,我忽然想若是没有数据库的话,怎么来搞定一个纯博客系统呢?github

之前用XML作一些查询系统的时候会遇到一个坑爹的事情,也就是听任访问会致使文件没关闭,另外一个请求就出来了,十分光火。参考了一下网上的案例,彷佛都是用一个文件来实现一个相似数据库的东西。因为脑洞大,不想拘泥于这种写法因而就在想能不能借助文件系统这个数据库来实现CRUD。答案是能够的,CUD所有交给文件管理器不就行了,程序只须要读就搞定。如今问题来了,ReadAllLines方法依然会致使资源抢占,那么得换种方法,也就是不论怎么读都不会出现这个竞争问题,解决办法很快就想到了——借助服务器就行了...将文章写成HTML专门放到一个Web文件夹里而后访问读取的时候后台发起一个get请求拿到全文后装配到视图模板。说白了就是Ajax(那么也就是说用JavaScript也能实现...web

因此便用ASP.NET建立了一个Project,而后一路写下去,感受良好后以为搞定了就准备发布,这个时候因为手贱打开了微软的ASP.NET的主站,脑子发热去看了一下vNext,忽然以为很厉害的样子(虽然感受技术水平一下回到解放前),一想,为何不搞一搞ASP.NET vNext呢,牛逼哄哄的确定很撇托了!数据库

要说真的,撇开DI和Middleware来讲若是使用DNX 4.5.1的话ASP.NET 5(也就是vNext)和之前MVC 5没啥区别,可是DNX 4.5.1是不能跨平台的,即对应.NET Framework,若是要跨平台你得用CLR Core,即DNX 5.0。因为vNext大力宣传其跨平台能力,因此我也决定把这个搞成一个跨平台的(羁绊的开始)。服务器

Server.MapPath()

首先DNX 5.0取消了System.Web这个万能一把手,因而乎用于访问磁盘文件的Server.MapPath()方法就废了,可是身残志坚,我们用StaticFiles访问静态文件,好在System.IO在DNX 5.0上能够用(其实DNX 5.0上不少FCL都是没有的,必须得借助其余实现),因而就解决了Server.MapPath()的问题。app

System.Net.WebClient.DownloadData()

这个方法也无法在DNX 5.0中用,哎哟卧槽,这玩意儿无法用那就真的只能用JavaScript了,可是用JavaScript是会暴露文章的真实路径的...虽然JS是一种办法可是总以为不优雅,因此System.Net这个命名空间里探索了很久终于把System.Net.Http.HttpClient.GetStringAsync()方法找到了,真是胡同里乱撞还进了桃花源了,方法简单很多,效果同样。测试

至此,核心问题解决,就能够发布了,因此今天下午这个FreeDBlog就搞定了,这就是我写的第一个ASP.NET vNext应用程序,真是筚路蓝缕....net

围观地址:这里调试

因此完结撒花~rest

如今就完结?

固然不是。

既然为了DNX 5.0才折腾这么多麻烦事儿,竟然就这么完结了,不测试一下就跑?确定要测试一下看看效果如何,木哈哈。

固然是脸黑了,否则怎么对得起剧情

确定是没跑起来...dnu restore后全部的包都下载下来了,可是我dnx web就是跑不起来,不对,是跑出来报错...然而ASP.NET vNext的Error须要本身Handle,我图简单就没写...好尴尬,在VS上调试下看看会遇到什么。

问题在VS上一下就出来了,因为IIS不跨平台(废话)因此在其余平台上使用了Kestrel,然而这玩意儿并不会像IIS那样将wwwroot做为当前目录,而是wwwroot的父目录。嗯加一个判断就行了。

再次尝试dnx web:

相关文章
相关标签/搜索