草庐IT

ASP.NET Core部署手册:3.Windows篇

坚持 2023-03-28 原文

“don't worry”,部署ASP.NET Core应用可以和原来部署.NET Framework的ASP.NET应用一样的简单,还是“熟悉的配方,熟悉的味道”,甚至提供了更加便捷的Kestrel部署方式,下面主要介绍在windows平台下两种常用部署方式:

  • 方式一:Kestrel部署Web应用
  • 方式二:IIS部署Web应用

下载ASP.NET Core运行时

在部署应用之前,ASP.NET Core运行时的具备是运行Web应用的基本条件,本文的部署以ASP.NET Core3.1的运行时版本为例,下载地址:https://dotnet.microsoft.com/zh-cn/download/dotnet/3.1,在界面上选择安装包时,保险起见建议选择Hosting Bundle(托管捆绑包),该包除了自身ASP.NET Core的运行时还包括了.NET 运行时和 IIS 支持。

 

请在文件下载后拷贝到对应的服务器进行安装。

为了确认安装是否成功,我们可以使用.NET CLI命令来验证,打开命令行窗口输入:dotnet --info,点击回车后如果出现如下界面则表示运行时安装成功。

1.方式一:Kestrel部署Web应用

1.1.配置Kestrel服务器监听的URL

Kestrel是ASP.NET Core内置的一个性能强大、功能丰富、跨平台的Web服务器,所以IIS服务器不再是我们部署应用的唯一选择。对于内置了Kestrel服务器的ASP.NET Core站点,在编译发布成功后,将发布目录直接拷贝到服务器上,在打开目录的exe文件就可以实现运行。

由于Kestrel服务器而言它默认监听绑定的地址是http://localhost:5000,这是一个本地访问的地址,所以如果我们要远程访问部署的站点,默认监听的地址显然是不行的,我们必须通过设置一个可以用于远程访问的地址。

配置Kestrel监听的URL目前有五种方式,本文主要介绍一种相对方便的方式进行配置,就是为服务器设置一个名称为:“ASPNETCORE_URLS”的环境变量,并将值设置为:http://0.0.0.0:5000/,其含义代表监听不局限于某个固定IP,使用路由器为服务器分配的IP加上5000端口号就可以访问。

 

有关更多配置Kestrel监听URL的方式可详见下面的地址:

1.2.使用.NET CLI命令进行发布

1.打开我们解决方案中启动项目的目录,鼠标右击空白处,在展开的菜单栏中点击“在终端中打开”。

 

2.我们使用.NET CLI命令结合控制台的方式编译发布Web站点,在命令行窗口输入以下命令:

dotnet publish --configuration Release -o MyFirstPublish

以上的命令表示我们将代码生成“配置”选项设置为Release模式,以便优化程序集。-o表示将编译发布后的文件存放在项目根目录中的“MyFirstPublish”的文件夹中。

3.输入.NET CLI命令后进行回车,如果执行没有异常且发布的文件成功创建,则表示发布成功。

4.将发布的文件拷贝到服务器的指定目录;

5.打开项目的发布文件夹,在目录下找到后缀为exe的文件(具体文件名和项目的名称一致),双击打开文件以启动Web服务。

6.在浏览器输入:服务器IP地址加ASP.NET Core默认使用的端口号5000,测试站点是否能够正常访问。

 

使用自带的Kestrel Web服务器部署运行ASP.NET Core应用,实际操作下来你会发现这种方式非常方便,可以说是ASP.NET Core中最快速的部署方案,但是该方案必须要保证项目的exe程序必须一直启动,如果关闭后我们的站点也会无法启动,所以在生产环境不建议使用该部署方式,不过对于开发演示阶段还是非常适合的。


 

2.方式二:IIS部署Web应用

2.1.安装IIS

本文以Windows Server2012 R2操作系统为例,介绍如何在服务器中安装IIS。

1.在服务管理器窗口点击“角色和功能”;

2.安装类型选择“基于角色或基于功能的安装”,单击下一步;

3.服务器选择“从服务器池中选择服务器”,单击下一步;

4.在选择服务器角色界面勾选“Web服务器IIS”,在弹出的对话框中单击添加功能即可;

 

5.在“选择功能”界面勾选.NET Framework 3.5功能和.NET Framework 4.5节点,以及节点下的所有节点;

6.在“选择角色服务”界面中,建议为IIS安装的服务勾选如下选项,勾选后点击下一步;

 

7.确认安装

 

2.2.使用VS将应用发布到文件夹

在VS中选择待发布的启动项目鼠标右击,在下拉菜单中选择【发布】,在弹出的窗口中会加载出VS目前所支持的发布方式。其中将应用程序发布到本地文件夹,是我们最“熟悉”的配方,从.NET Framework到.Net Core该方式也一直保留,该方式也是目前VS发布中最常用的方式,所以我们延用该方式进行发布,选择后单击下一步。

 选择将项目发布文件存放在哪个目录,这个目录根据个人需求自定义或者使用默认路径即可,单击下一步。

 

在选择好发布方式和发布文件的存放路径后,VS会为项目自动生成一个发布配置文件,我们在发布配置文件界面底部点击【显示所有设置】可以进行发布的配置界面。

 

下面我们对以上的配置的说明和选择做一个简单的介绍,详见下表:

在配置好发布文件后,单击右上角的【发布】按钮启动发布流程。

2.3.添加IIS网站

在服务器打开IIS管理器,在左侧节点树选择网站节点,右击在菜单中选择【添加网站】,然后在界面中对部署网站进行配置。其中网站名称通常设置为项目名称,IP地址选择未分配则使用服务器当前的IP地址,端口号的选择要确保已开通相应的端口权限,输入完内容后单击【完成】。

在【应用程序池】列表中找到项目对应的应用程序池双击打开,在界面中将.NET CLR版本设置为“无托管代码”

 

单击确定后,网站的部署工作已经完成,可以尝试访问站点看是否访问正常。

 

如果发布后网站无法访问,可以浏览文章《ASP.NET Core部署手册:注意事项和问题排查》尝试分析。

 

 

有关ASP.NET Core部署手册:3.Windows篇的更多相关文章

  1. ruby - 在 Ruby 程序执行时阻止 Windows 7 PC 进入休眠状态 - 2

    我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0

  2. ruby-on-rails - 每次我尝试部署时,我都会得到 - (gcloud.preview.app.deploy) 错误响应 : [4] DEADLINE_EXCEEDED - 2

    我是Google云的新手,我正在尝试对其进行首次部署。我的第一个部署是RubyonRails项目。我基本上是在关注thisguideinthegoogleclouddocumentation.唯一的区别是我使用的是我自己的项目,而不是他们提供的“helloworld”项目。这是我的app.yaml文件runtime:customvm:trueentrypoint:bundleexecrackup-p8080-Eproductionconfig.ruresources:cpu:0.5memory_gb:1.3disk_size_gb:10当我转到我的项目目录并运行gcloudprevie

  3. ruby - 在 Windows 机器上使用 Ruby 进行开发是否会适得其反? - 2

    这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby​​-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub

  4. ruby-on-rails - Ruby on Rails 可以部署在 Azure 网站上吗? - 2

    我可以在Azure网站上部署RubyonRails吗? 最佳答案 还没有。目前仅支持.NET和PHP。 关于ruby-on-rails-RubyonRails可以部署在Azure网站上吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/12964010/

  5. Vscode+Cmake配置并运行opencv环境(Windows和Ubuntu大同小异) - 2

    之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m

  6. jenkins部署1--jenkins+gitee持续集成 - 2

    前置步骤我们都操作完了,这篇开始介绍jenkins的集成。话不多说,看操作1、登录进入jenkins后会让你选择安装插件,选择第一个默认的就行。安装完成后设置账号密码,重新登录。2、配置JDK和Git都需要执行路径,所以需要先把执行路径找到,先进入服务器的docker容器,2.1JDK的路径root@69eef9ee86cf:/usr/bin#echo$JAVA_HOME/usr/local/openjdk-82.2Git的路径root@69eef9ee86cf:/#whichgit/usr/bin/git3、先配置JDK和Git。点击:ManageJenkins>>GlobalToolCon

  7. 深度学习部署:Windows安装pycocotools报错解决方法 - 2

    深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal

  8. ruby - 在 ASP 页面上 Mechanize 中断 - 2

    require'mechanize'agent=Mechanize.newlogin=agent.get('http://www.schoolnet.ch/DE/HomeDE.htm')agent.clicklogin.link_withtext:/Login/然后我得到Mechanize::UnsupportedSchemeError。 最佳答案 Mechanize不支持javascript但您可以将搜索字段添加到表单并为其分配搜索词并使用mechanize提交表单form=page.forms.firstform.add_fie

  9. Ruby,使用包含 TK GUI 的 ocra 部署一个 exe - 2

    Ocra无法处理需要“tk”的应用程序require'tk'puts'nope'用奥克拉http://github.com/larsch/ocra不起作用(如链接中的一个问题所述)问题:https://github.com/larsch/ocra/issues/29(Ocra是1.9的"new"rubyscript2exe,本质上它用于将rb脚本部署为可执行文件)唯一的问题似乎是缺少tcl的DLL文件我不认为这是一个问题据我所知,问题是缺少tk的DLL文件如果它们是已知的,则可以在执行ocra时将它们包括在内有没有办法知道tk工作所需的DLL依赖项? 最佳答

  10. ruby - 如何在 Ruby 中执行 Windows CLI 命令? - 2

    我在目录“C:\DocumentsandSettings\test.exe”中有一个文件,但是当我用单引号编写命令时`C:\DocumentsandSettings\test.exe(我无法在此框中显示),用于在Ruby中执行命令,我无法这样做,我收到的错误是找不到文件或目录。我尝试用“//”和“\”替换“\”,但似乎没有任何效果。我也使用过系统、IO.popen和exec命令,但所有的努力都是徒劳的。exec命令还使程序退出,这是我不想发生的。提前致谢。 最佳答案 反引号环境就像双引号,所以反斜杠用于转义。此外,Ruby会将空格解

随机推荐