• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ASP.NET5Beta8发布及升级经验

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

(此文章同时发表在本人微信公众号“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


  • 鲜花

    握手

    雷人

    路过

    鸡蛋
    该文章已有0人参与评论

    请发表评论

    全部评论

    专题导读
    上一篇:
    【ASP.NET】如何在asp后台实现弹出对话框发布时间:2022-07-10
    下一篇:
    ASP.NET Web Form 的“连续”和“有状态”假象发布时间:2022-07-10
    热门推荐
    热门话题
    阅读排行榜

    扫描微信二维码

    查看手机版网站

    随时了解更新最新资讯

    139-2527-9053

    在线客服(服务时间 9:00~18:00)

    在线QQ客服
    地址:深圳市南山区西丽大学城创智工业园
    电邮:jeky_zhao#qq.com
    移动电话:139-2527-9053

    Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap