解读ASP.NET 5 & MVC6系列教程(3):项目发布与部署

由于新版ASP.NET5支持多版本DNX运行环境的发布部署,所以在部署之前,我们需要设定部署的目标DNX(即之前的KRE)。

步骤:右键BookStore项目->属性->Application选项卡,选择DNX的版本,本例中,选择dnx-coreclr-win-x64.1.0.0-beta4。

在project.json文件的commands节点,我们可以看到,系统默认配置了3个调试命令,分别如下:

命令 描述
web   启动WebListener服务,该服务可以让web程序脱离IIS运行,默认地址是:5000。  
gen   使用该命令可以生成MVC相关的代码,比如Controller,目前还用不到。  
ef   Entity Framework迁移命令,用于迁移数据使用,本例我们还用户不到。  

理论上来说,我们F5运行的时候,应该是启动web命令,但是在VS2015中,默认的运行环境依然是IIS Express,所以F5调试的时候,会默认启动IIS Express。

gen参考:https://www.jb51.net/article/87244.htm
注意:web模式和IIS Express模式的程序运行端口不一样。

我们先F5调试运行,启动IIS Express,打开页面,一切正常。重新选择默认模拟器环境为web,再F5运行,这时候发现弹出了一个命令行窗口,并提示如下文字:

[INFORMATION:Microsoft.NET.Http.Server.WebListener] Start [INFORMATION:Microsoft.NET.Http.Server.WebListener] Listening on prefix: :5000/ Started

代码没有出错,但是并没有打开浏览器窗口,我们手工打开一个浏览器访问上述网址,即可看到该示例程序的界面,此时说明,该BookStore已经成功运行在5000端口了。其实该模式下的浏览器自动打开功能默认是关闭的,可以通过如下方式开启自动打开功能:

步骤:右键BookStore项目->属性->Debug选项卡,勾选Launch Brower复选框,并在输入框里输入上述网址即可(此时会在项目的Properties目录下生成一个debugSettings.json文件来保存上述信息)。

再次F5运行,即可看到自动打开的浏览器界面。

应用程序参数
在该Debug选项卡中,我们还看到一个应用程序参数(Application Arguments)输入框,该输入框可以传入多种参数,这些参数可以在Startup.cs里,通过Configuration的AddCommandLine方法进行收集并利用。

环境变量
同理,在Debug选项卡的最下面还有一个环境变量(Environment Variables)输入框,可以让我们在调试的时候自定义一些环境变量的值(key/value),然后通过Configuration的AddEnvironmentVariables方法进行收集并利用。

上述参数和环境变量的具体使用方式,请参考配置信息管理章节。

发布流程分析

在之前的MVC程序中,我们一般都是通过右键项目,选择发布(Publish)的方式来发布程序的,这一次我们也来看看这种方式。

首先,右键->发布->Profile(选择File System)->选择D:\BookStore->选择Release/coreclr->下一步,最终点击发布。在在Output面板,我们看到出错了,错误信息如下:

正在连接到 D:\Documents\Visual Studio 2015\Projects\BookStore\BookStore\..\artifacts\bin\BookStore\Release\Publish... C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.DNX.Publishing.targets(342,5): 错误 : 错误: 无法识别规则“BackupRule”。 C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.DNX.Publishing.targets(342,5): 错误 : 错误计数: 1。 C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.DNX.Publishing.targets(342,5): 错误 : An error occured during publish. The command ["C:\Program Files (x86)\IIS\Microsoft Web Deploy\msdeploy.exe" -source:contentPath='C:\Users\Administrator\AppData\Local\Temp\PublishTemp\' -dest:contentPath='D:\Documents\Visual Studio 2015\Projects\BookStore\artifacts\bin\BookStore\Release\Publish' -verb:sync -enableRule:DoNotDeleteRule -retryAttempts:2 -disablerule:BackupRule ] exited with code [-1]。

通过查看输出信息,可以发现,编译成功,但复制的时候出错,可能是powershell的问题,所以返回上述步骤,在设置(Settings)选项卡下,将取消发布脚本(Publish Scripts)下的使用PowerShell脚本发布的复选框。重新发布,成功了。

打开发布目录D:\BookStore,发现生成了如下目录和文件:

目录或文件 描述
approot   应用程序目录  
wwwroot   静态文件目录  
gen   linux shell命令文件  
gen.cmd   cmd命令文件  
web   linux shell命令文件  
web.cmd   cmd命令文件  

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wjyszf.html