作者:手机用户2602933123 | 来源:互联网 | 2023-10-11 10:17
(此文章同时发表在本人微信公众号“dotNET每日精华文章”,欢迎右边二维码来关注。)题记:ASP.NET5Beta8如期发布,这是一个重要的里程碑,因为这是ASP.NET5的特性冻结版本,
(此文章同时发表在本人微信公众号“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