ASP.NET Core 初体验

739 字
4 分钟
...阅读
...评论

前两天试了下 ASP.NET Core MVC,很好用。微软整合了大量前端工具,npm、Bower 都可以很方便地使用了,甚至对 Grunt、Gulp 这类的工具都有集成一些任务管理器,这对前端来说,是一件鼓舞人心的事。

ASP.NET Core MVC 的推荐目录结构也进行了调整,新增了wwwroot这样一个静态目录,js、css、图片都可以放这里面,而 Bower 管理的第三方前端库则会自动下载到wwwroot里面的 lib 目录下。作为强迫症的我,wwwroot这个目录必须全部是自动生成的。通过 Gulp,可以很轻松的实现这一点。继承原先的目录结构习惯,在解决方案下建立 Scripts、Styles、Images 文件夹,里面用来放原始的 js、less 和图片,然后通过 Gulp 进行合并、压缩、复制到wwwroot目录下,这样 wwwroot 这个目录就可以在 git 里面排除掉了。完美。而在 ASP.NET Core 的项目目录下默认的.gitignore文件里,微软其实是已经有这样的想法:

# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/

在代码层面,和之前差别不大,基本上 M、V、C 的代码都可以直接拿过来用。在 bundle 上有一些变化,然而我是直接删掉了默认的 bundle 配置,既然可以方便地使用 Gulp 了,为啥不用呢?

在 View 中,新增了environment的语法,可以通过environment标签来控制开发环境和生产环境的不同输出,主要是用来控制 css、js 这些文件的引用,在开发环境下使用未压缩的文件,在生产环境下使用压缩过的文件。还提供了 cdn 的方式,可以配置多个链接,优先使用 CDN 的链接,通过asp-fallback-test来检查 CDN 的链接是否可用,不可用的话再切换为本地的链接。和之前 Bundle 里面的方式差不多,只是使用起来更简单了。现在 css、js 这些文件的缓存控制也比以前更简单,只需要加上asp-append-version="true"即可在文件名后面自动加上版本号后缀。

项目部署上面,确实遇到了一个坑。我是通过 Web Deploy 来自动部署的,花了半天时间才终于搞定。

  1. IIS 里应用程序池中的.NET CLR版本要选择“无托管代码”
  2. 安装.NET Core Windows Server Hosting,这里有个大坑,安装完之后要执行一下iisreset,我没有执行这一步,导致出现了HTTP Error 502.5 - Process Failure的问题,从事件查看器里面看到的错误日志是:Failed to start process with commandline '"dotnet" .\****.dll', ErrorCode = '0x80070002'.。遇到同样问题的朋友可以试试iisreset或者重启机器。
  3. 安装HttpPlatformHandler
  4. 还有个就是我当时用 Web Delpoy 往服务器部署的时候,文件总是推不上去,后来 Google 了一下,在 pubxml 里面加上了以下两行:
<AllowUntrustedCertificate>True</AllowUntrustedCertificate>
<UsePowerShell>False</UsePowerShell>
  1. 下载Provisioning PowerShell script,在服务器上使用PowerShell运行,输入应用程序池的名称即可。
评论区
Copyright © Bean Deng