(此文章同时发表在本人微信公众号“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. 【GoLang】GoLang 错误处理 -- 官方推荐方式 示例

      最严谨的方式,Always检查error,并做相应的处理 项目结构: 代码: common.go: package common import ( "github.com/pkg/error ...

    2. Linux 查找指定名称的进程并显示进程详细信息

      实际应用中可能有这样的场景:给定一个进程名称特征串,查找所有匹配该进程名称的进程的详细信息. 解决的办法是: (1) 先用pgrep [str] 命令进行模糊匹配,找到匹配该特征串的进程ID: (2) ...

    3. Oracle11g +Win 64+PLSQL9.0

      最近在Oracle11g配置数据库的时候发现了一个问题,就是找不到监听,网上说win7的64位的系统必须装上32位的客户端才能被PLSQL 识别,事实上也是这样,PLSQL 只能识别32位的客户端,所 ...

    4. Visual Studio与Chrome调试工具使用技巧

      VS: 1: Ctrl + Enter (在光标指定位置的上面添加一行,并将光标移至新添加行的行首位置) Ctrl + Shift + Enter (在光标指定位置的下面添加一行,并将光标移至新添加行 ...

    5. 【leetcode】Wildcard Matching

      Wildcard Matching Implement wildcard pattern matching with support for '?' and '*'. '?' Matches any ...

    6. poj1177

      题意:在平面直角坐标系内给出一些与坐标轴平行的矩形,将这些矩形覆盖的区域求并集,然后问这个区域的周长是多少.(边与边重合的地方不计入周长) 分析:线段树.曾经做过类似的求矩形覆盖的总面积的题.这道题同 ...

    7. ios delegate 使用注意 assign,weak

      今天一个同事写代码,把一个delegate对象设定成了assign类型属性,没有用weak,就是delegate对象释放后,不会把delegate指针自动设定为nil,把对象的delegate设定成了 ...

    8. [转] Android Volley完全解析(一),初识Volley的基本用法

      版权声明:本文出自郭霖的博客,转载必须注明出处.   目录(?)[-] Volley简介 下载Volley StringRequest的用法 JsonRequest的用法   转载请注明出处:http ...

    9. .NET中的CTS、CLS和CLR

      在学习.NET的过程中,都会不可避免地接触到这三个概念,那么这三个东西是什么以及它们之间的关系是怎样的呢?我们在学习的过程中可能比较过多的会去关注CLR,因为CLR是.NET Framework的核心 ...

    10. 表单中Readonly和Disabled的区别(转载)

      Readonly和Disabled是用在表单中的两个属性,它们都能够做到使用户不能够更改表单域中的内容.但是它们之间有着微小的差别,总结如下: Readonly只针对input(text / pass ...