34.1 在 IIS 部署
精简发布文件
如果需要精简发布后的文件,也就是删除不必要的文件夹,可以编辑 Web 项目的 .csproj
并添加 <SatelliteResourceLanguages>en-US</SatelliteResourceLanguages>
,如:
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<SatelliteResourceLanguages>en-US</SatelliteResourceLanguages>
</PropertyGroup>
34.1.1 发布网站
34.1.1.1 选择启动项发布

34.1.1.2 选择发布到文件夹

34.1.1.3 配置发布后路径

34.1.1.4 点击发布

34.1.2 服务器环境配置
34.1.2.1 第一步
安装.NET Core 运行时捆绑包:点击下载
34.1.2.2 第二步(命令)
net stop was /y
34.1.2.3 第三步(命令)
net start w3svc
34.1.2.4 第四步(命令)
set ASPNETCORE_ENVIRONMENT=Production
34.1.3 部署到 IIS
34.1.3.1 添加新网站

34.1.3.2 配置网站信息

34.1.3.3 配置应用程序池

34.1.3.4 设置为 非托管

34.1.3.5 重启网站
只需重启网站或应用程序池即可。
34.1.4 常见问题
34.1.4.1 405 状态码,不支持 PUT,DELETE
请求
默认情况下,IIS
拒绝 PUT
和 DELETE
请求,原因为 IIS
默认注册了一个名为 WebDAVModule
的自定义 HttpModule
导致的。
解决该问题,只需要在 web.config
移除即可:
<configuration>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<remove name="webDAVModule"/>
</modules>
</system.webServer>
</configuration>

34.1.4.2 WebSocket
/ SignalR
连接报错
如果项目部署在 IIS
中出现 WebSoket
/SignalR
不能连接或连接失败等问题,请确保 IIS
服务中的 WebSocket 协议
是勾选状态

34.1.4.3 部署之后缺失 api-ms-win.xxxx.dll
问题
有时候将发布文件发布到服务器后,出现丢失 api.ms-win.xxxx.dll
文件,这时只需要重新发布并选择服务器特定的架构即可。


34.1.5 IIS
回收问题和配置
通过 IIS
部署 .NET Core
应用程序,如果启动了系统日志,就会发现经常出现 Application is shutting down...
的日志,代表 IIS
回收了应用程序池。
对于一个长期在线的网站来说,这是非常不合理的,所以我们可以通过以下配置让 IIS
进行长时间不访问便回收的机制。
配置步骤如下:
- 打开
IIS
并点击左侧树根节点(计算机名称)并点击右侧的Configuration Editor
(配置编辑器)

- 在
Section
(节)选择system.applicationHost/applicationPools
并设置startMode
为AlwaysRunning
,之后点击Apply
保存。

- 点击左侧树根节点(计算机名称)下的
Application Pools
并点击最右侧的Set Appliation Pool Defaults...
(设置应用程序池默认配置...)

- 设置
Idle Time-out (minutes)
(闲置超时(分钟)为0

这样即可解决 IIS
回收问题。
34.1.6 反馈与建议
与我们交流
给 Furion 提 Issue。