.NET 6中如何使用HTTP.sys托管Blazor应用
在Blazor .NET 6中切换到HTTP.sys托管
为什么默认用Kestrel且看不到相关代码
.NET 6的Blazor Server项目采用最小API模板,WebApplication.CreateBuilder(args)会自动完成以下封装逻辑:
- 加载默认配置源(
appsettings.json、环境变量、命令行参数等) - 默认启用Kestrel作为Web服务器
这些操作被框架底层处理,所以你不需要在Program.cs里显式编写Kestrel相关代码。
切换到HTTP.sys的具体步骤
1. 修改Program.cs配置HTTP.sys
在Program.cs中,创建builder之后、调用builder.Build()之前,添加HTTP.sys的启用代码:
var builder = WebApplication.CreateBuilder(args); // 启用HTTP.sys托管并配置选项 builder.WebHost.UseHttpSys(options => { // 配置监听地址(也可通过launchSettings.json或命令行参数指定) options.Urls.Add("http://localhost:10555"); // 可选:配置Windows认证(按需开启) // options.Authentication.Schemes = AuthenticationSchemes.NTLM | AuthenticationSchemes.Negotiate; // options.Authentication.AllowAnonymous = false; }); builder.Services.AddRazorPages(); builder.Services.AddServerSideBlazor(); // [保留你原有的服务配置代码] var app = builder.Build(); // [保留你原有的请求管道配置代码] app.Run();
2. (可选)调整launchSettings.json
开发环境调试时,只需确保launchSettings.json里的applicationUrl和代码中配置的监听地址一致即可,HTTP.sys会自动读取该配置,无需额外指定服务器类型。
关键注意事项
- HTTP.sys是Windows专属的Web服务器,无法在Linux/macOS环境运行
- 若要绑定80/443这类特权端口,需以管理员身份启动生成的.exe文件
- HTTP.sys支持的特性(如Windows认证、端口共享)与Kestrel存在差异,可根据业务需求调整
options配置项
内容的提问来源于stack exchange,提问作者M.M
相关产品推荐
相关产品推荐

