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

目录
  • 一、创建项目
  • 二、发布项目
    • 1、框架依赖
    • 2、独立部署
  • 三、部署
    • 1、配置部署环境
    • 2、控制台方式部署
    • 3、部署到IIS
    • 4、独立部署

一、创建项目

本篇文章介绍如何将一个ASP.NET Core Web程序部署到Windows系统上。这里以ASP.NET Core WebApi为例进行讲解。首先创建一个ASP.NET Core WebApi项目,使用默认的Values控制器,这里使用Visual Studio 2019创建一个ASP.NET Core 3.1d的WebApi项目。

创建新项目的时候选项ASP.NET Core Web应用程序,如下图所示:

配置新项目界面界面设置项目名称和位置,如下图所示:

选择.Net Core框架下面的ASP.NET Core 3.1,创建一个API项目,不勾选“为HTTPS配置”,如下图所示:

这样就创建好了一个Web Api项目,我们访问项目:

浏览器里面可以正常访问,说明我们创建的项目没有问题,接下来我们就把这个项目部署到windows系统上面。

二、发布项目

我们在上面创建了一个Web Api项目,下面先发布项目。ASP.NET Core项目有两种发布部署模式,下面分分进行讲解。

1、框架依赖

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

我们在项目上面右键选择“发布”:

发布目标选择发布到文件夹,将文件发布到FDD文件夹,然后点击“高级”:

在发布界面,部署模式选择框架依赖,目标运行时选择默认的可移植:

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

最后点击“保存”按钮,然后发布即可:

这样就使用FDD方式发布成功了。我们看看发布后的文件:

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

2、独立部署

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

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

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

三、部署

1、配置部署环境

我们在上面的步骤中,已经把程序发布到文件夹了,下面进行部署。我们先演示如何使用FCD模式进行部署。FCD模式需要依赖于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

如下图所示:

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

还可以管理服务器里面重启启动IIS,如下图所示:

2、控制台方式部署

我们先使用控制台的方式进行部署。进入发布后的路径,执行下面的命令,以命令行的方式进行启动:

dotnet dll文件名称

如下图所示:

可以看到项目已经启动了,正在监听5000端口,我们在浏览器里面访问下面的url地址:http://localhost:5000/weatherforecast

可以看到能够正常返回信息。

这里测试的时候是在Windows服务器上部署的,如果是在个人电脑上面部署,在浏览器里面浏览的时候会直接在web页面里面显示。

我们是把程序部署到了服务器上面,在服务器上面可以浏览,那么在远程电脑上面能不能浏览呢?我们在远程电脑上面浏览:

可以看到拒绝我们的访问,这是为什么呢?因为监听的IP地址是localhost,如果想要远程电脑可以访问,还需要使用urls参数进行设置:

这里使用了*号,表示任意网址都可以访问,我们再次访问:

这次我们就可以访问了。使用urls参数还可以指定访问的端口号,比如我们想监听8090端口,就可以使用下面的命令:

dotnet AspNetCoreDeployDemo.dll  --urls http://*:8090

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

3、部署到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里面添加网站,如下图所示:

最后点击“确定”按钮,网站及部署完成。我们在浏览器里面进行浏览:

这样就可以访问了。

在ASP.NET Core 3.x以前版本中,部署完网站之后,我们还需要设置应用程序池,将.NET CLR版本设置为“无托管代码”,在ASP.NET Core 3.x开始的版本中,无需在设置应用程序池,部署完网站之后就可以直接访问了。我们也可以设置应用程序池为“无托管代码”,如下图所示:

4、独立部署

上面的两种部署方式都是基于框架依赖发布后的文件进行部署的,我们在看看如何使用独立部署发布后的文件进行部署,我们看到发布后有一个exe文件:

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

这时可以在浏览器里面进行访问了。这样就可以部署了,真实生产中不建议使用这种方式。

到此这篇关于部署ASP.NET Core程序到Windows系统的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • .net core部署到windows服务上的完整步骤

    前言 Net core 项目部门在Windows有很多种方式,大致有以下几种, dotnet 命令, iis(windowshosts), 一些开源的应用容器(docker ) 基于一些exe 程序,微软官网上案例 Nssm 搭建windows服务 其中优劣对比在这不进行累述.我今天是把它搭建到windows服务上的,这种方式对于我们现有dotnet来说相对美观(一个黑框框,一个看不到),电脑重启可以自动重启. 1.实现 1.1.下载nssm 官网http://www.nssm.cc/,下载地址

  • .Net Core WebApi部署到Windows服务器上的步骤

    上一篇学习到了如何简单的创建.Net Core Api和Swagger使用,既然写了接口,那么就需要部署到服务器上才能够正式使用.服务器主要用到了两种系统,Windows和Linux,.Net和Windows都是属于微软爸爸的,那么这一篇就先从部署到Windows服务器系统开始吧. 一.准备服务器 首先,我们需要一台装了Windows Server的云服务器,但是我没有.那么,到这里就结束了.(╮( ̄▽ ̄)╭开玩笑的) 言归正传,我们没有云服务器怎么办,那当然是要买一台了.有人会说有点贵,确实,

  • .Net Core以windows服务方式部署

    前言 netcore用了这么久,虽然多数都是部署在centos系统,但也有部署在windows上的情况.最省力的部署方式是发布后直接在发布目录打开cmd,运行dotnet命令.虽然很省力,但是保留一个命令窗口,如果需要同时部署多个程序的话,就会保留多个窗口,而且还不能叉掉,对强迫症(我这种)来说简直不能忍.... 所以更好的部署方式就是把程序以windows服务的方式部署,还可以设置自动启动,节省一点运维成本. 怎么做? 首先准备一个core程序,然后引入这个包: 再然后找到main入口: pu

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

    目录 一.创建项目 二.发布项目 1.框架依赖 2.独立部署 三.部署 1.配置部署环境 2.控制台方式部署 3.部署到IIS 4.独立部署 一.创建项目 本篇文章介绍如何将一个ASP.NET Core Web程序部署到Windows系统上.这里以ASP.NET Core WebApi为例进行讲解.首先创建一个ASP.NET Core WebApi项目,使用默认的Values控制器,这里使用Visual Studio 2019创建一个ASP.NET Core 3.1d的WebApi项目. 创建新

  • 部署ASP.NET Core程序到Linux系统

    目录 一.前言 二.安装运行时环境 1.在线安装 2.离线包安装 三.上传文件 四.部署 1.使用Kestrel启动 2.使用Nginx作为反向代理 一.前言 这篇文章我们将讲解如何将ASP.NET Core 程序部署到Linux.这里我们使用的是虚拟机里面安装的Centos7.这里的ASP.NET Core程序,以上篇文章中发布的框架依赖文件为例进行讲解. 二.安装运行时环境 1.在线安装 我们只是在Linux系统上面部署应用程序,所以只需要安装ASP.NET Core Runtime即可.在

  • 使用Docker部署ASP.NET Core程序

    一.前言 这篇文章介绍如何将一个ASP.NET Core应用程序在Docker中进行部署.开发工具使用的是Visual Studio 2019和VS Code. 二.使用Docker部署 我们选择新建一个MVC项目进行演示. 1.新建MVC项目 模板选择ASP.NET Core Web应用程序,如下图所示: 输入项目名称,点击“创建”: 选择Web应用程序(模型视图控制器),并勾选“启用Docker支持”,如下图所示: 然后会检查Docker环境是否安装,如下图所示: 这样一个MVC项目就创建完

  • 使用Docker部署ASP.NET Core程序

    一.前言 这篇文章介绍如何将一个ASP.NET Core应用程序在Docker中进行部署.开发工具使用的是Visual Studio 2019和VS Code. 二.使用Docker部署 我们选择新建一个MVC项目进行演示. 1.新建MVC项目 模板选择ASP.NET Core Web应用程序,如下图所示: 输入项目名称,点击“创建”: 选择Web应用程序(模型视图控制器),并勾选“启用Docker支持”,如下图所示: 然后会检查Docker环境是否安装,如下图所示: 这样一个MVC项目就创建完

  • Linux系统Docker 部署 ASP.NET Core应用的流程分析

    一.系统环境 1.腾讯云轻量应用服务器CentOS7.6 二.操作流程及途中遇到的问题 1.SSH方式远程Linux ssh <username>@<IP address or domain name> 如果遇到下图问题: 出现这个问题的原因:known_hosts是记录远程主机的公钥的文件,之前重装个系统,而保存的公钥还是未重装系统的系统公钥,在ssh链接的时候首先会验证公钥,如果公钥不对,那么就会报错 解决方法:使用shh-keygen 命令ssh-keygen -R IP,执

  • Linux上使用Docker部署ASP.NET Core应用程序

    一.创建 1.创建应用程序 使用ASP.NET Core创建一个MVC应用程序,并修改Home控制器Index视图代码: @{ ViewData["Title"] = "Home Page"; } <div class="text-center"> @*<h1 class="display-4">Welcome</h1> <p>Learn about <a href=&qu

  • ASP.NET Core程序发布到Linux生产环境详解

    在这篇文章里我们将介绍如何在 Ubuntu 14.04 Server上部署ASP.NET Core应用程序.我们将把ASP.NET Core应用程序放到一个反向代理服务器的后面,由代理服务器把请求转交给我们的Kestrel服务器.除此之外,我们还将保证我们的web应用程序作为一个守护进程来进行启动.我们需要配置一个进程管理工具来帮助我们在程序崩溃时恢复程序,以保证高可用性. 章节: 准备 复制你的应用程序 配置一个反向代理服务器 监控我们的应用程序 启动我们的应用程序 观察日志 使我们的应用程序

  • ubuntu16.4下用jexus部署ASP.NET Core环境

    上篇文章介绍了下用vs发布部署到iis环境,今天说下ubuntu下部署asp.net core,不需要安装.net core sdk,自带运行时方式部署,利用jexus服务器转发请求到asp.net core. 1.部署准备环境 vmware虚拟机(其他也可以) ubuntu16.04镜像 2.发布环境 win10系统 vs2015 update3 或vs code (也可以用dotnet new -t web 命令创建项目) dotnet sdk DotNetCore.1.0.0-SDK.Pr

  • 在IIS上部署ASP.NET Core项目的图文方法

    概述 与ASP.NET时代不同,ASP.NET Core不再是由IIS工作进程(w3wp.exe)托管,而是使用自托管Web服务器(Kestrel)运行,IIS则是作为反向代理的角色转发请求到Kestrel不同端口的ASP.NET Core程序中,随后就将接收到的请求推送至中间件管道中去,处理完你的请求和相关业务逻辑之后再将HTTP响应数据重新回写到IIS中,最终转达到不同的客户端(浏览器,APP,客户端等).而配置文件和过程都会由些许调整,中间最重要的角色便是AspNetCoreModule,

  • 在IIS上部署ASP.NET Core Web API的方法步骤

    对于本文,我想与您分享有关如何在IIS上部署ASP.NET Core Web API的指南.我将指导您安装Visual Studio 2019,.NET Core Runtime 3.0.我还确保我逐步引导您在服务器(Web IIS)中启用它,使用no受管代码选项创建新的应用程序池,创建ASP.NET Core Web API项目以及发布ASP.NET Core Web API. 了解并遵循正确的步骤来准备开发和部署环境后,在IIS上部署ASP.NET Core Web API就是一件容易的事.

随机推荐