(此文章同时发表在本人微信公众号“dotNET每日精华文章”,欢迎右边二维码来关注。)

题记:ASP.NET 5 Beta8如期发布,这是一个重要的里程碑,因为这是ASP.NET 5的特性冻结版本,强烈建议之前迟疑没有使用ASP.NET 5于生产环境的同学可以开始尝试了。

这次作为功能冻结的版本,变化相对于Beta7还是有很多地方的。

最大的改变莫过于改变了IIS托管模型

之前托管方式是“脚踏两只船”,除了DNX宿主外,还存在一个名为“Helios”用于IIS的宿主。这种方式带来了开发、维护和测试的复杂度,还让程序执行的内部流程有所不同。现在只有一个DNX宿主,如果想跑在IIS中的话,需要借助于一个新的HttpPlatformHandler,把请求传递给ASP.NET 5的Kestrel服务器。

这个IIS的扩展如果是IISExpress的话,可以安装Beta8的Web Tools更新来获得,如果不是就需要单独安装。

另外,对于旧项目还需要在wwwroot中添加一个web.config【update2015-10-21】来配置httpPlatformHandler,在project.json文件中添加“Microsoft.AspNet.IISPlatformHandler”和“Microsoft.AspNet.Server.Kestrel”的包,然后在Startup.cs文件中的Configure方法中添加“app.UseIISPlatformHandler();”。web.config的【/update2015-10-21】具体内容可以看文末的链接或者用beta8新建一个项目来参考。

其次是本地化支持的功能。

使用app.UseRequestLocalization(options)启用本地化后,内置的语言判断提供器就会根据请求头、查询字符串或者cookie值来判断当前语言。而后就可以利用services.AddLocalization(options => options.ResourcesPath = "resources");来传递本地化字符串内容了。

当然MVC的本地化也得到了支持。

DNX Watch命令实现动态化开发。

虽然.NET是支持动态编译的,要实现如Ruby、Python那样动态化开发(即在生产环境修改或推送代码后,程序以最新版本运行)还是需要做一些额外工作(或者选用WebPages这样的框架)。现在在ASP.NET 5中提供了DNX Watch命令,可以监控项目中所有文件的变动,从而实现快速的开发工作流程:编辑代码、保存、然后刷新浏览器就可以看到更新)。

安装方式:dnu commands install Microsoft.Dnx.Watcher

执行方式:dnx-watch web

除了上面这些加强,更多的可以参阅beta8的发布公告和发布说明

http://blogs.msdn.com/b/webdev/archive/2015/10/15/announcing-availability-of-asp-net-5-beta8.aspx

https://github.com/aspnet/Home/releases/tag/v1.0.0-beta8

从beta7升级beta8

当然,整个beta8也带来了一些破坏性改变,我结合我从beta7升级的经验简单介绍一下:

  • TargetElementAttribute改名为HtmlTargetElementAttribute
  • 用StringValues代替string[] 比如访问HttpContext.Request.Header的时候写法就有所不同
  • UseErrorHandler和UseErrorPage扩展进行了重命名,也就是UseErrorHandler->UseExceptionHandler,UseErrorPage->UseDeveloperExceptionPage
  • Controller.Context -> Controller.HttpContext
  • OpenIdConnectAuthenticationDefaults -> OpenIdConnectDefaults
  • ActionExecutedContext 命名空间改为Microsoft.AspNet.Mvc.Filters
  • IOptions.Options -> IOptions.Value
  • IdentityOptions.EmailConfirmationTokenProvider -> IdentityOptions.Tokens.EmailConfirmationTokenProvider
  • Controller提供诸如User、Request属性,无需通过HttpContext来间接访问了,比较接近MVC5的Controller用法
  • IdentityServiceCollectionExtensions.ConfigureIdentity去除,配置放到AddIdentity中;ConfigureIdentityApplicationCookie去除,配置通过IdentityOptions的Cookies属性配置
  • MemoryConfigurationSource –>MemoryConfigurationProvider
  • ConfigurationBuilder的构造器进行调整,不再接受basePath值的传入,而需要这样: var configurationBuilder = new ConfigurationBuilder().SetBasePath(appEnv.ApplicationBasePath)

    更多的改变记录可以看这里:https://github.com/aspnet/Announcements/issues?q=is%3Aopen+is%3Aissue+milestone%3A1.0.0-beta8

    Beta8的Web Tools下载在:http://www.microsoft.com/en-us/download/details.aspx?id=49442

  • ASP.NET 5 Beta8发布及升级经验的更多相关文章

    1. ASP.NET 5 Beta8 发布

      ASP.NET 5 Beta8 发布 ASP.NET 5 的路线图(详见 ASP.NET 5 Schedule and Roadmap : https://github.com/aspnet/home ...

    2. 将asp.net core站点发布到IIS上遇到的问题

      今天第一次将整个 asp.net core 站点发布到 IIS 上,以前都是发布到 Linux 服务器上. 开始使用 dotnet publish -c release 命令发布,用浏览器访问站点时出 ...

    3. ASP.NET 5 Beta7发布

      (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 前几天,ASP.NET 5如期发布了Beta 7,根据路线图 (https://github ...

    4. 关于asp.net 网站网站发布时提示:错误 27 对路径 AppData\Local\Temp\~632b\bin\App_Code.compil的解决方法

      关于asp.net 网站网站发布时提示:错误 27 对路径 AppData\Local\Temp\~632b\bin\App_Code.compil的解决方法 问题如下图所示,方法是去掉: <i ...

    5. ASP.NET Core 网站发布到Linux服务器(转)

      出处;ASP.NET Core 网站发布到Linux服务器 长期以来,使用.NET开发的应用只能运行在Windows平台上面,而目前国内蓬勃发展的互联网公司由于成本的考虑,大量使用免费的Linux平台 ...

    6. asp.net mvc 5发布部署遇到403.14

      asp.net mvc 5发布部署遇到403.14? HTTP错误 403.14 服务器配置为不列出此目录内容 除了设置.net运行的权限 isap和cgi启动状态外.可能是因为你手贱. 将这个钩去掉 ...

    7. 介紹 IIS 8 全新的 HttpPlatformHandler 模組與 ASP.NET 5 Beta8 重大變更

      HttpPlatformHandler 是一個支援 IIS 8 與 IIS 8.5 的原生模組 (native module),主要使用於 Microsoft Azure Websites 網站服務中 ...

    8. ASP.NET Core IIS发布

      ASP.NET Core应用发布到IIS 官网教程地址:https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/publish-to-iis?vi ...

    9. Windows平台部署 Asp.Net Core 3.1.0,将 ASP.NET Core 应用发布到 IIS ,使用 IIS 在 Windows 上托管 ASP.NET Core

      第一部分:本教程介绍如何在 IIS 服务器上托管 ASP.NET Core 应用. 官方文档地址:https://docs.microsoft.com/zh-cn/aspnet/core/tutori ...

    随机推荐

    1. PHPCMS V9教程之快速入门

      这篇文章要为大家来介绍PHPCMS V9这个系统的一些基本知识,PHPCMS是基于面向对象的,严格的安装MVC开发模式开发的CMS系统,同时他还是一个非 常不错的PHP框架.下面我们一起看一下PHPC ...

    2. 用ConfigParser模块读写配置文件——Python

      对于功能较多.考虑用户体验的程序,配置功能是必不可少的,如何存储程序的各种配置? 1)可以用全局变量,不过全局变量具有易失性,程序崩溃或者关闭之后配置就没了,再者配置太多,将变量分配到哪里也是需要考虑 ...

    3. ubuntu14.04 us sources.list

      deb http://us.archive.ubuntu.com/ubuntu/ trusty main restricted deb-src http://us.archive.ubuntu.com ...

    4. Calico在Docker中的搭建

      一,Multi-host网络需求 开始之前推荐两篇文章 http://xelatex.github.io/2015/11/15/Battlefield-Calico-Flannel-Weave-and ...

    5. Wijmo 5 与Breeze 的组合,及与METRONIC 的集成

      1.Wijmo 5  是支持ANGULARJS 的HTML5 控件   http://wijmo.gcpowertools.com.cn/ 官方试用版  C1Wijmo-Eval_5.20151.42 ...

    6. 数学软件 之 基于MATLAB的DFP算法

      DFP算法是本科数学系中最优化方法的知识,也是无约束最优化方法中非常重要的两个拟Newton算法之一,上一周写了一周的数学软件课程论文,姑且将DFP算法的实现细节贴出来分享给学弟学妹参考吧,由于博客不 ...

    7. INNODB自增主键的一些问题

      背景: 自增长是一个很常见的数据属性,在MySQL中大家都很愿意让自增长属性的字段当一个主键.特别是InnoDB,因为InnoDB的聚集索引的特性,使用自增长属性的字段当主键性能更好,这里要说明下自增 ...

    8. Python初识

      Python第一天   一.为什么学Python        作为一名linux运维工程师现在越来越感觉不好干了.没有地位,还待背黑锅,并且运维自动化发展的这么快,普通运维岗位的路也越来越窄(因为我 ...

    9. Effective C++ -----条款52:写了placement new 也要写 placement delete

      当你写一个placement operator new ,请确定也写出了对应的placement operator delete.如果没有这样做,你的程序可能会发生隐微而时断时续的内存泄漏. 当你声明 ...

    10. Effective C++ -----条款24:若所有参数皆需类型转换,请为此采用non-member函数

      如果你需要为某个函数的所有参数(包括被this指针所指的那个隐喻参数)进行类型转换,那么这个函数必须是个non-member.