You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 03:40:44