Bootstrap

如何在 IIS 上部署 .NET Core 应用程序 ?

Deploy .NET Core Application on IIS

在 Internet 信息服务 (IIS) 上部署 .NET Core 应用程序起初可能看起来令人生畏,但只要步骤正确,它就是一个简单的过程。本指南将引导您在 IIS 上部署 .NET Core 应用程序。

Step 1: 安装 .NET Core Hosting Bundle

(1) 前往官方下载页面 .NET download page
选择需要的版本并下载 .NET Core Hosting Bundle

Download .NET Hosting Bundle

(2) 在服务器上运行安装程序,这将安装 .NET Core Runtime , .NET Core LibraryASP.NET Core 模块。ASP.NET Core 模块是在 IIS 上托管 .NET Core 应用程序的必要组件。

(3) 在命令中运行 iisreset,重新启动 IIS 以加载新安装的模块。

Step 2: 发布 .NET Core 应用

Using Visual Studio

  1. 在 Visual Studio 中打开您的应用
  2. 在项目上右键单击,Solution Explorer -> Publish
  3. 选择 Folder 作为发布目标,并指定一个文件夹来发布应用程序文件。
  4. 点击 Publish, Visual Studio 将编译您的应用程序并将必要的文件复制到指定的文件夹中。

Using Command Prompt

在命令行中切换到项目目录,然后,执行如下命令

dotnet publish -c Release

此命令以发布模式编译应用程序,然后输出到 bin/Release/netcoreapp{version}/publish 目录。

Step 3: 创建 IIS 应用池

Using IIS Manager

(1) 打开 the IIS Manager

(2) Connections 面板中,Application Pools 右键单击,选择 Add Application Pool .

(3) 命名你的应用程序池,.NET CLR version 设置为 No Managed Code, Managed Pipeline Mode 设置为 Integrated

Create IIS Application Pool for .NET Core

Using Command Prompt

(1) 以管理员身份打开命令提示符。

(2) 执行以下命令:

cd %windir%\system32\inetsrv
appcmd add apppool /name:"DotNetCorePool" /managedRuntimeVersion:"" /managedPipelineMode:"Integrated"

(3) 将 DotNetCorePool 替换为您应用程序池的名称

Step 4: 在 IIS 上部署应用程序

Using IIS Manager

(1) 打开 IIS Manager, 在 Sites 上右键单击, 在 Connections 面板上选择 Add Website

(2) 为您的网站输入一个名称,并选择您之前创建的应用程序池。

(3) 对于物理路径,浏览并选择发布 .NET Core 应用程序的文件夹。

(4) 指定绑定信息(如 IP 地址、端口和主机名)。

(5) 单击 OK 添加网站。

Using Command Prompt

您也可以使用命令提示符在 IIS 中创建网站。

cd %windir%\system32\inetsrv
appcmd add site /name:MyWebsite /physicalPath:C:\inetpub\wwwroot\MyApp /bindings:http/*:80:example.com /apppool:DotNetCorePool

MyWebsite替换为您的网站名称,C:\inetpub\wwwroot\MyApp 替换为应用程序路径,example.com 替换为您的域名,DotNetCorePool 替换为上一步中创建的应用程序池。

Step 5: 配置 ASP.NET Core 模块

确保你的 web.config 文件已正确设置为 ASP. NET Core 模块转发 HTTP 请求到您的应用程序。该文件应该包含在发布的输出中,并包含如下设置:

<configuration>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath="dotnet" arguments=".\YourApplication.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="InProcess" />
  </system.webServer>
</configuration>

YourApplication.dll 替换为您的应用程序 dll 名称。

Step 6: 测试应用

打开浏览器并访问站点配置的 URL,测试是否运行正常。

常见问题

HTTP Error 502.5 – Process Failure

这通常表明应用程序的启动过程有问题。检查事件日志和标准输出日志(如果启用了)以查找特定的错误。

500 Internal Server Error

这可能有多种原因,包括网络问题,web.config文件或应用程序依赖项。同样,日志对于诊断这些问题非常宝贵。

404 File or Directory Not Found

如果应用程序的物理路径不正确或应用程序池配置错误,可能会发生这种情况。

我的开源项目

酷瓜云课堂-开源知识付费解决方案

;