第一个 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一个简单的模板就具备了数据库操作.身份验证.输入数据校 ...
随机推荐
- spring+hibernate实体类注解详解(非原创) + cascade属性取值
@Entity //继承策略.另一个类继承本类,那么本类里的属性应用到另一个类中 @Inheritance(strategy = InheritanceType.JOINED ) @Table(nam ...
- 【转载】SQL Server 2008 r2 中 SQL语句中单引号转义
sql server有两个转义符. 默认情况下, 单引号'是字符串的边界符, 如果在字符串中包含单引号', 则必须使用两个单引号', 第1个单引号'就是转义符.
- 《Linux 多线程服务端编程:使用 muduo C++ 网络库》电子版上市
<Linux 多线程服务端编程:使用 muduo C++ 网络库> 电子版已在京东和亚马逊上市销售. 京东购买地址:http://e.jd.com/30149978.html 亚马逊Kin ...
- Python学习(基础简绍)
今天终于开始了python的学习,至于python的历史我就不说了,百度百科中太详细了,我这里说就是关公面前耍大刀,太自不量力了,所以,废话不多说,直接讲讲我惊天学习Python的收获吧. 1.Pyt ...
- js处理匿名函数
首先js 有DOM0 和DOM2级事件 DOM 0级事件处理一般是直接把一个函数分配给一个事件处理程序,既可以在元素中直接分配一个事件处理程序 一个元素可以绑定多个事件 DOM0: <div i ...
- 急!JDBC问题,发生通信错误。错误位置:Reply.fill()。消息:数据不足。 ERRORCODE=-4499, SQLSTATE=08001
代码如下:Class.forName("com.ibm.db2.jcc.DB2Driver");Connection conn = DriverManager.getConnect ...
- JS组件系列——封装自己的JS组件
前言:之前分享了那么多bootstrap组件的使用经验,这篇博主打算研究下JS组件的扩展和封装,我们来感受下JQuery为我们提供$.Extend的神奇,看看我们怎么自定义自己的组件,比如我们想扩展一 ...
- JIT动态编译器的原理与实现之Interpreter(解释器)的实现(三)
接下来,就是要实现一个虚拟机了.记得编码高质量的代码中有一条:不要过早地优化你的代码.所以,也本着循序渐进的原则,我将从实现一个解释器开始,逐步过渡到JIT动态编译器,这样的演化可以使原理看起来更清晰 ...
- CreateFile() 打开u盘 物理设备
//以下是用的vs2010 windows7 64 管理员权限编译成功的 HANDLE hDev = CreateFile(TEXT("\\\\.\\PhysicalDrive1" ...
- 编写shell脚本遇到的问题
运行shell脚本提示“syntax error near unexpected token for((i=0;i<$length;i++))”: 原因是因为Linux下的换行符是 \n 而你在 ...