要说免费的虚拟主机的话,最好的服务商应该就是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 应用程序的更多相关文章

  1. 学习ASP.NET MVC(一)——我的第一个ASP.NET MVC应用程序

    学习ASP.NET MVC系列: 学习ASP.NET MVC(一)——我的第一个ASP.NET MVC应用程序 学习ASP.NET MVC(二)——我的第一个ASP.NET MVC 控制器 学习ASP ...

  2. NHibernate构建一个ASP.NET MVC应用程序

    NHibernate构建一个ASP.NET MVC应用程序 什么是Nhibernate? NHibernate是一个面向.NET环境的对象/关系数据库映射工具.对象/关系数据库映射(object/re ...

  3. 【ASP.NET】第一个ASP.NET MVC应用程序

    本系列目录:ASP.NET MVC4入门到精通系列目录汇总 开发流程 新建Controller 创建Action 根据Action创建View 在Action获取数据并生产ActionResult传递 ...

  4. 使用Visual Studio Code创建第一个ASP.NET Core应用程序

    全文翻译自:Your First ASP.NET Core Application on a Mac Using Visual Studio Code 这篇文章将向你展示如何在Mac上写出你的第一个A ...

  5. 4、ASP.NET MVC入门到精通——NHibernate构建一个ASP.NET MVC应用程序

    下周就去办理离职手续了,之前没有使用过NHibernate,只知道NHibernate是一种ORM框架,但是听说新公司是使用NHibernate在做项目,所以,我就网上找资料学习一下NHibernat ...

  6. 第一个ASP.NET MVC应用程序

    首先打开vs2015 文件->新建->项目 选择模版选empty,下面[为下项添加文件夹和核心引用]勾选mvc 点击确定就好

  7. ASP.NET没有魔法——开篇-用VS创建一个ASP.NET Web程序

    为什么写这一系列文章? 本系列文章基于ASP.NET MVC,在ASP.NET Core已经发布2.0版本,微服务漫天的今天为什么还写ASP.NET?. 答:虽然现在已经有ASP.NET Core并且 ...

  8. 2.第一个ASP.NET MVC 5.0应用程序

    大家好,上一篇对ASP.NET MVC 有了一个基本的认识之后,这一篇,我们来看下怎么从头到尾创建一个ASP.NET MVC 应用程序吧.[PS:返回上一篇文章:1.开始学习ASP.NET MVC] ...

  9. ASP.NET开发实战——(一)开篇-用VS创建一个ASP.NET Web程序

        本文是本系列文章第一篇,主要通过建立一个默认ASP.NET MVC项目来引出与ASP.NET MVC相关的功能,由于ASP.NET MVC一个简单的模板就具备了数据库操作.身份验证.输入数据校 ...

随机推荐

  1. MVC中获取模型属性的Range和StringLength验证特性设置

    MVC中的客户端及服务端模型验证信息都以ModelMetadata类型作为承载,在获得属性的ModelMetadata之后(还不知道怎么获取ModelMetadata的童鞋请自行恶补),我们可以轻松得 ...

  2. inndb存储引擎调优

    inndb存储引擎调优介绍: InnoDB给MySQL提供了具有提交,回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎.InnoDB锁定在行级并且也在SELECT语句提供一个Oracle风格一致的 ...

  3. [修改后]html+css 做成一个可浏览的表格

    现在表格内容需要显示的要求如下: 1, 表格很大,界面放不小,需要放到div中. 2, 在div中可以用scroll滑动查看. 3, td中的内容保持在一行中. 4, 可以点击tr,然后可以选中并了解 ...

  4. 数据库执行sql报错Got a packet bigger than 'max_allowed_packet' bytes及重启mysql

    准备在mysql上使用数据库A,但mysql5经过重装后,上面的数据库已丢失,只得通过之前备份的A.sql重新生成数据库A. 1.执行sql报错 在执行A.sql的过程中,出现如下错误:Got a p ...

  5. php namespace用法

    其实纠结了很久要不要使用这个东西,但是看看了最新的框架laravel,cakephp等等的新版本都使用上了,所以还是随大流顺便学习下. namespace和c++里面的概念差不多,只是用法有点差别. ...

  6. --with-http_realip_module选项(后台Nginx服务器记录原始客户端的IP地址 )

    转自:http://blog.itpub.net/27043155/viewspace-734234/ 通过这个模块允许我们改变客户端请求头中客户端IP地址值(例如,X-Real-IP 或 X-For ...

  7. CentOS 6.5 x86_64系统手动释放内存

    1.查询当前内存使用情况和释放缓存的参数 redismaster 10:29:24 [~] [root] free -m total used free shared buffers cachedMe ...

  8. 读书笔记——body and html

    在看<常见标签的默认属性值及相互作用——关于CSS reset的思考>的时候,其中说body默认的margin是8px.但是,将body的backgound-color:red:后,看到的 ...

  9. C语言之数组,字符串,指针

    一. 数组的定义 1.  数组初始化 初始化方式 int a[3] = {10, 9, 6}; int a[3] = {10,9}; int a[] = {11, 7, 6}; int a[4] = ...

  10. [转]了解SQL Server锁争用:NOLOCK 和 ROWLOCK 的秘密_Mr_Indigo的空间

    了解SQL Server锁争用:NOLOCK 和 ROWLOCK 的秘密 关系型数据库,如SQL Server,使用锁来避免多用户修改数据时的并发冲突.当一组数据被某个用户锁定时,除非第一个用户结束修 ...