第一个 Asp.Net vNext 应用程序
要说免费的虚拟主机的话,最好的服务商应该就是Microsoft Azure(不是Windows Azure由世纪互联运营),提供免费的1GB .NET/Java/Python/Php空间,日流量有限制但是不算太高。免费的版本不能绑域名,所以你得用重定向或者DNS服务商提供的隐式跳转服务。
早起的Microsoft Azure并不提供免费的SQL数据库,而号称免费的MySQL数据库老是创建不了实例,这就比较尴尬了,所以只能用Sqlite之类的数据库来跑,鉴于这个,我突然想如果没有数据库的话,怎么来搞定一个纯博客系统呢?
以前用XML做一些查询系统的时候会遇到一个坑爹的事情,也就是放任访问会导致文件没关闭,另一个请求就出来了,十分光火。参考了一下网上的案例,似乎都是用一个文件来实现一个类似数据库的东西。由于脑洞大,不想拘泥于这种写法于是就在想能不能借助文件系统这个数据库来实现CRUD。答案是可以的,CUD全部交给文件管理器不就好了,程序只需要读就搞定。现在问题来了,ReadAllLines方法依然会导致资源抢占,那么得换种方法,也就是不论怎么读都不会出现这个竞争问题,解决办法很快就想到了——借助服务器就好了...将文章写成HTML专门放到一个Web文件夹里然后访问读取的时候后台发起一个get请求拿到全文后装配到视图模板。说白了就是Ajax(那么也就是说用JavaScript也能实现...
所以便用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()的问题。
System.Net.WebClient.DownloadData()
这个方法也没法在DNX 5.0中用,哎哟卧槽,这玩意儿没法用那就真的只能用JavaScript了,但是用JavaScript是会暴露文章的真实路径的...虽然JS是一种办法但是总觉得不优雅,所以System.Net这个命名空间里探索了好久终于把System.Net.Http.HttpClient.GetStringAsync()方法找到了,真是胡同里乱撞还进了桃花源了,方法简单不少,效果一样。
至此,核心问题解决,就可以发布了,所以今天下午这个FreeDBlog就搞定了,这就是我写的第一个ASP.NET vNext应用程序,真是筚路蓝缕...
围观地址:这里
所以完结撒花~
现在就完结?
当然不是。
既然为了DNX 5.0才折腾这么多麻烦事儿,居然就这么完结了,不测试一下就跑?肯定要测试一下看看效果如何,木哈哈。
当然是脸黑了,不然怎么对得起剧情
肯定是没跑起来...dnu restore后所有的包都下载下来了,但是我dnx web就是跑不起来,不对,是跑出来报错...然而ASP.NET vNext的Error需要自己Handle,我图简单就没写...好尴尬,在VS上调试下看看会遇到什么。
问题在VS上一下就出来了,由于IIS不跨平台(废话)所以在其他平台上使用了Kestrel,然而这玩意儿并不会像IIS那样将wwwroot作为当前目录,而是wwwroot的父目录。嗯加一个判断就好了。
再次尝试dnx web:

第一个 Asp.Net vNext 应用程序的更多相关文章
- 学习ASP.NET MVC(一)——我的第一个ASP.NET MVC应用程序
学习ASP.NET MVC系列: 学习ASP.NET MVC(一)——我的第一个ASP.NET MVC应用程序 学习ASP.NET MVC(二)——我的第一个ASP.NET MVC 控制器 学习ASP ...
- NHibernate构建一个ASP.NET MVC应用程序
NHibernate构建一个ASP.NET MVC应用程序 什么是Nhibernate? NHibernate是一个面向.NET环境的对象/关系数据库映射工具.对象/关系数据库映射(object/re ...
- 【ASP.NET】第一个ASP.NET MVC应用程序
本系列目录:ASP.NET MVC4入门到精通系列目录汇总 开发流程 新建Controller 创建Action 根据Action创建View 在Action获取数据并生产ActionResult传递 ...
- 使用Visual Studio Code创建第一个ASP.NET Core应用程序
全文翻译自:Your First ASP.NET Core Application on a Mac Using Visual Studio Code 这篇文章将向你展示如何在Mac上写出你的第一个A ...
- 4、ASP.NET MVC入门到精通——NHibernate构建一个ASP.NET MVC应用程序
下周就去办理离职手续了,之前没有使用过NHibernate,只知道NHibernate是一种ORM框架,但是听说新公司是使用NHibernate在做项目,所以,我就网上找资料学习一下NHibernat ...
- 第一个ASP.NET MVC应用程序
首先打开vs2015 文件->新建->项目 选择模版选empty,下面[为下项添加文件夹和核心引用]勾选mvc 点击确定就好
- ASP.NET没有魔法——开篇-用VS创建一个ASP.NET Web程序
为什么写这一系列文章? 本系列文章基于ASP.NET MVC,在ASP.NET Core已经发布2.0版本,微服务漫天的今天为什么还写ASP.NET?. 答:虽然现在已经有ASP.NET Core并且 ...
- 2.第一个ASP.NET MVC 5.0应用程序
大家好,上一篇对ASP.NET MVC 有了一个基本的认识之后,这一篇,我们来看下怎么从头到尾创建一个ASP.NET MVC 应用程序吧.[PS:返回上一篇文章:1.开始学习ASP.NET MVC] ...
- ASP.NET开发实战——(一)开篇-用VS创建一个ASP.NET Web程序
本文是本系列文章第一篇,主要通过建立一个默认ASP.NET MVC项目来引出与ASP.NET MVC相关的功能,由于ASP.NET MVC一个简单的模板就具备了数据库操作.身份验证.输入数据校 ...
随机推荐
- 打造 html5 文件上传组件,实现进度显示及拖拽上传,支持秒传+分片上传+断点续传,兼容IE6+及其它标准浏览器
老早就注册了博客园帐号,昨天才发现,连博客都没开,Github也是一样,深觉惭愧,赶紧潜个水压压惊`(*∩_∩*)′ 言归正传.大概许多人都会用到文件上传的功能,上传的库貌似也不少,比如(jQuery ...
- 用keras的cnn做人脸分类
keras介绍 Keras是一个简约,高度模块化的神经网络库.采用Python / Theano开发. 使用Keras如果你需要一个深度学习库: 可以很容易和快速实现原型(通过总模块化,极简主义,和可 ...
- FreeSWITCH 1.2.5.3 Step by Step Install
Ubuntu: apt-get -y install build-essential automake autoconf git-core wget libtool apt-get -y instal ...
- CR LF的由来
学习Esperanto时用到一款叫做Kajero的软件,支持世界语特殊字符编辑. 在Option菜单中有个选项,End of line 列出了四种换行方式 这四种都是由基本CR和LF组成.那么CR和L ...
- 《Linux 多线程服务端编程:使用 muduo C++ 网络库》电子版上市
<Linux 多线程服务端编程:使用 muduo C++ 网络库> 电子版已在京东和亚马逊上市销售. 京东购买地址:http://e.jd.com/30149978.html 亚马逊Kin ...
- MongoDB基本管理命令
MongoDB是一个NoSQL数据库系统:一个数据库可以包含多个集合(Collection),每个集合对应于关系数据库中的表:而每个集合中 可以存储一组由列标识的记录,列是可以自由定义的,非常灵活,由 ...
- 新版Xcode无法新建iOS空项目解决方案
--感谢同学分享-- 操作说明: 拷贝Empty Application.xctemplate文件夹至 /Contents/Developer/Platforms/iPhoneOS.platfor ...
- I/O知识
1.jdk1.4之前(jdk1.4开始提供了nio)的早起版本,java对I/O的支持并不完善,开发人员开发高性能I/O程序时,面临的问题主要有: 没有缓冲区,I/O性能存在问题 没有 ...
- JSP中添加弹出框
JSP中添加弹出框 %> <script language="javascript" type="text/javascript"> aler ...
- Windows下的UDP爆了10054--远程主机强迫关闭了一个现有的连接
原文地址:http://www.cnblogs.com/pasoraku/p/5612105.html 故事是这样的. 前几天在网上逛,看到了一个漂亮的坦克模型. 我觉得这个坦克可以做一个游戏,那需要 ...