切换导航
{{systemName}}
{{ info.Title }}
{{info.Title}}
{{ menu.Title }}
{{menu.Title}}
登录
|
退出
搜索
IIS 启动后立即加载和执行 Startup 方法
作者:ych
### 可以通过以下方法启用预加载功能 #### 启用应用程序预加载 IIS 提供了应用程序初始化模块`Application Initialization Module`,允许应用程序在启动时立即被加载。 步骤: (1 安装`Application Initialization`模块 确保已安装 IIS 的`Application Initialization`模块。 在`Windows`功能中启用: 打开 控制面板 > 程序和功能 > 启用或关闭`Windows`功能。 找到 Internet 信息服务 > Web 管理工具 > Application Initialization,勾选并安装。 (2 配置应用程序池 打开 IIS 管理器。 选择目标站点对应的应用程序池。 右键 > 高级设置: 设置 启动模式(Start Mode) 为`AlwaysRunning`。 确保`空闲超时`设置为`0`。 (3 配置站点预加载 打开 IIS 管理器,选择目标站点。 右键 > 高级设置: 将 启用预加载(Preload Enabled) 设置为`True`。 (4 修改 web.config 文件(这个可以不管) 在应用程序的 web.config 文件中,添加以下内容: ```
``` 说明: doAppInitAfterRestart="true":在 IIS 重启后立即初始化应用程序。 initializationPage="/":指定初始化时请求的页面(通常为应用程序根路径)。 ### 使用外部请求触发 如果无法使用预加载功能,可以通过外部工具定期发送请求来触发应用程序启动: 使用脚本或任务计划程序定期访问应用程序的 URL,例如: ``` Invoke-WebRequest -Uri http://your-website.com -UseBasicParsing ``` 将该脚本配置为在服务器启动时自动运行。 ### 实现自定义后台任务 即使没有请求,您也可以通过 IHostedService 或 BackgroundService 在应用启动时运行后台任务。 示例: ``` public class PreloadService : IHostedService { private readonly ILogger
_logger; public PreloadService(ILogger
logger) { _logger = logger; } public Task StartAsync(CancellationToken cancellationToken) { _logger.LogInformation("Application preload started."); // 执行初始化任务 return Task.CompletedTask; } public Task StopAsync(CancellationToken cancellationToken) { _logger.LogInformation("Application preload stopped."); return Task.CompletedTask; } } ``` 注册服务: ``` services.AddHostedService
(); ``` 这样即使没有请求,`PreloadService`也会在应用程序启动时执行。 ### 启用 Kestrel 的热启动(可选) 如果应用程序运行在独立的 Kestrel 服务器上,可以在 Program.cs 中添加逻辑让其自动加载: ``` var app = builder.Build(); // 在应用启动时调用 WebSocket 初始化逻辑 if (AppSetting.WebSocketSetttings.UseWebSocket) { var webSocketHelper = new WebSocketHelper(app.Services.GetRequiredService
()); webSocketHelper.RegisterRedisMessageHandler(); webSocketHelper.StartAsync(CancellationToken.None).GetAwaiter().GetResult(); } app.Run(); ``` ### 总结 默认情况下,`Startup`方法需要请求触发。如果希望在 IIS 启动后立即加载: >启用 IIS 的 Application Initialization 模块。 调整应用程序池和站点设置以支持预加载。 使用 BackgroundService 或外部脚本触发启动任务。 完成配置后,重启 IIS 并验证应用是否按预期加载。
相关推荐
IIS应用程序池自动回收机制导致异常
iis关闭回收机制,保证iis不回收
进行IIS部署uniapp启用hostory
IIS 服务20分钟后自动停止
网站在IIS发布后每隔一段时间请求变缓慢的处理方案
内网部署的报表不能加载外网js问题处理如ai.0.js
VUE发布到IIS及URL重写
从零学习使用IIS搭建Web服务器部署网站
评论区
先去登录
版权所有:机遇屋在线 Copyright © 2021-2025 jiyuwu Co., Ltd.
鲁ICP备16042261号-1