ASP.NET Core教程:ASP.NET Core 程序部署到Windows系统

框架依赖

一、发布
框架依赖(FDD):即Framework-dependent deployments的缩写。这种发布方式依赖于Framework框架,即要部署的服务器上面必须按照ASP.NET Core 运行时环境(ASP.NET Core Runtime)。这种部署方式是微软默认推荐的。下面我们看看如何使用框架依赖进行部署。

我们在项目上面右键选择“发布”:
在这里插入图片描述

发布目标选择发布到文件夹,将文件发布到FDD文件夹,然后点击“高级”:
在这里插入图片描述

在发布界面,部署模式选择框架依赖,目标运行时选择默认的可移植:
在这里插入图片描述

我们看到目标运行时下面有好多选项,这里选择“可移植”,表示编译后的文件可以部署到windows平台、Max平台、Linux平台。如果只想部署到某一个平台,那么可以选择具体的一个平台。比如只想部署到Linux系统的x64架构,那么选择“linux-x64”即可。

最后点击“保存”按钮,然后发布即可:
在这里插入图片描述

这样就使用FDD方式发布成功了。我们看看发布后的文件:
在这里插入图片描述

可以看到,框架依赖方式发布后的文件很少。

二、部署

配置部署环境

我们在上面的步骤中,已经把程序发布到文件夹了,下面进行部署。我们先演示如何使用FDD模式进行部署。FDD模式需要依赖于Framework框架,由于我们只是部署,所以只需要安装ASP.NET Core Runtime即可,不需要安装SDK。我们首先需要在服务器上面安装ASP.NET Core runtime,去微软官网下载相应版本进行安装即可,这里选择ASP.NET Core Runtime 3.1:
在这里插入图片描述

这里选择下载Hosting Bundle。因为Hosting Bundle包括了.Net Core运行时和IIS支持。

下载完成以后,双击exe文件即可进行安装:

安装完成以后我们在命令行里面输入下面的命令,检查是否安装成功:

dotnet --info

如下图所示:
在这里插入图片描述

可以看到提示我们已经安装了.NET Core runtimes环境,没有安装SDK。

由于我们需要部署到IIS上面,所以安装完以后要重启电脑,或者使用下面的命令行重启IIS服务:

net stop was /y
net start w3svc

如下图所示:
在这里插入图片描述

注意:要以管理员身份运行命令行,否则会报拒绝访问的错误

1、控制台方式部署
指定URL
dotnet dll文件名称 --urls http://*:8090

指定端口号
dotnet dll文件名称 --p 8090

直接以控制台的方式部署程序,一般适合于我们自己开发调试程序,真实的生产环境中,不建议使用这种方式。这种方式是Kestrel服务器直接处理HTTP请求,在windows系统中,我们一般是把ASP.NET Core 程序部署在IIS上面,IIS作为反向代理服务器使用。下面我们看看如何部署到IIS上。

2、部署到IIS

在传统的.NET Framework中,ASP.NET程序发布到IIS上面,是由IIS的工作进程(w3wp.exe)托管的,在任务管理器中可以找到该进程。在ASP.NET Core程序中不再是由IIS工作进程托管,而是使用自托管Web服务器(Kestrel)运行,IIS则是作为反向代理的角色转发请求到Kestrel不同端口的ASP.NET Core程序中,然后将接收到的请求推送至中间件管道中,处理完请求后在将HTTP响应数据重新回写到IIS中,最终通过IIS转达到不同的客户端。在这过程中,最重要的角色便是AspNetCoreModuleV2(asp.net core 2.0以前版本中是AspNetCoreModuleV2,asp.net core 2.x版本是AspNetCoreModule,从3.0开始又改回了AspNetCoreModuleV2),它是IIS中的一个模块,HTTP请求进入到IIS之后便立即由它转发,并迅速重定向到ASP.NET Core项目中。因为IIS只是作为反向代理负责转发请求,不负责监听HTTP请求端口,所以不需要使用应用程序池来托管我们的代码。

电脑上面安装好了asp.net core 运行时以后,在IIS的模块里面会有AspNetCoreModule:
在这里插入图片描述

双击“模块”,查看里面是否有AspNetCoreModule模块:
在这里插入图片描述

接下来在IIS里面添加网站,如下图所示:

在这里插入图片描述

独立部署

独立(SCD):即Self-contained deployments的缩写。这种方式表示独立提供运行时环境,即要部署的服务器上面不需要安装ASP.NET Core运行时环境即可部署。由于不需要预先安装运行时环境,所以这种发布方式编译后的文件大小会比框架依赖方式编译后的文件大小大。在发布的时候,部署模式选择独立即可:
在这里插入图片描述

这时候目标运行时就没有可移植选项了,由于我们要在windows系统上面部署,所以这里选择win-x64。最后保存发布即可。发布完成以后,我们在看看发布后的文件:
在这里插入图片描述

可以看到,发布后的文件很多,这时因为发布的时候有一些程序运行需要使用的dll文件夹会打包进来。

我们双击该exe文件,会看到直接以控制台的方式启动:

在这里插入图片描述

如果双击exe后访问不了网址,那是因为需要在代码中指定默认端口号。或者使用dotnet dll文件名称也可以部署。

 //默认端口号9200
 if (args.Length > 1 && args[0] == "-p")
 {
     string portStr = args[1];
     if (Regex.IsMatch(portStr, @"^\d*$"))
     {
         webBuilder.UseUrls($"http://*:{portStr}");
     }
 }
 else
 {
     webBuilder.UseUrls($"http://*:9200");
 }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,我之前的回答有误。作为一个AI语言模型,我不能和人一样自己学习和纠错,所以有时候会出现错误的回答。对此我感到非常抱歉。 关于您的问题,Tomcat是Java应用服务器,而ASP.NET Core是一种跨平台的Web应用程序框架,两者并不相关。如果您想在Windows部署ASP.NET Core程序,可以使用IIS或者Windows服务来进行部署。 使用IIS部署ASP.NET Core程序比较简单,可以参考微软官方的文档进行操作。而使用Windows服务部署ASP.NET Core程序则需要一些额外的工作,具体可以参考以下步骤: 1. 安装.NET Core Runtime和ASP.NET Core Runtime。 2. 创建ASP.NET Core应用程序,在项目文件中添加Microsoft.AspNetCore.Hosting.WindowsServices包。 3. 在Program.cs文件中添加以下代码: ``` public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .UseWindowsService() .UseStartup<Startup>(); ``` 4. 在Visual Studio的“解决方案资源管理器”中右键单击项目,选择“属性”,在“应用程序”选项卡中设置“输出类型”为“Windows应用程序”。 5. 使用命令行工具安装Windows服务,命令如下: ``` sc.exe create <service_name> binPath= "<path_to_executable>" start= auto ``` 其中,“service_name”为服务的名称,“path_to_executable”为应用程序的可执行文件路径。 6. 启动Windows服务即可。 希望以上步骤能够帮助到您。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值