.Net6多种启动方式和部署Windows详解
环境: NET6、 IIS、ASPNETCore部署IIS程序包、windows10
开发工具:VS2022
PS:虚拟机的安装有点问题,笔者会在另外的随笔里单独写一篇关于 .NET6部署至Linux
多种启动方式
1基于开发工具启动
在VS中启动项目,可以选择项目名称直接启动,也可以选择以IIS Express的方式启动。两者的区别
在于选择项目名称启动会带有一个控制台应用输出,比如要使用Console.WriteLine()方法输出某个参数.。
而选择IIS Express是没有控制台应用输出的
2 命令行启动
通过命令行启动后,我们可以在浏览器访问该地址(在VS的launchSettings.json配置信息里或者命令行里可以看到启动成功后的端口号等配置信息)
1 dotnet run
Win+r ,输入cmd 进入DOS命令行, cd 到项目的根目录下 使用dotnet run运行
2 dotnet dll
Win+r ,输入cmd 进入DOS命令行, cd 到项目的DLL文件生成的位置 使用
Dotnet dllName --urls=http://locahost:9912 //- -后面是参数=值
静态文件丢失的问题
通过命令行Dotnet dllName 启动项目后,我们会发现项目报错了,提示各种静态文件的丢失,暂未解决 建议使用dotnet run命令
IIS部署
1 IIS安装
Windows10 系统 搜索启用或关闭Windows功能,勾选Internet Information Services的所有选项,确定后会自动安装
2 ASPNETCore 部署IIS 程序包安装
地址:https: / dotnet.microsoft.com/download/dotnet/6.0
或者在浏览器中直接搜索 .net6 进入网页选择 Hosting Bundle 进行下载,然后安装程序包
在IIS管理界面里----模块(双击模块)--这里一般会有AspNetCoreModuleV2如果没有,点击配置本机模块将AspNetCoreModuleV2加入即可
3 部署网站
1通过开发工具VS发布项目
2 在IIS中新建网站,设置网站名称、端口号,指定物理路径为发布好的文件夹位置
4 IIS部署和通过命令行启动的区别
使用dotnet run 和IIS部署后启动网站其实本质上并无区别, 查看IIS部署的网站文件可以看到对比于直接使用dotnet run命令行启动多了
一个web.config配置文件,在配置文件中handlers节点下有如下代码
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
AspNetCoreModuleV2用来处理请求
在aspNetCore 标签里有如下代码
<aspNetCore processPath="dotnet" arguments=".\WebApplication1.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
从上述代码中我们可以看出实际上还是使用dotnet命令运行了dll,网站部署到IIS上只是做了个类似方向代理,最终还是命令行执行。
通过命令行启动可以直接访问网站是因为ASP.NETCORE内置了服务器