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

如何将控制台项目中的Blazor .NET 5.0网站托管到Windows Service

Blazor .NET 5.0 站点托管到Windows Service 实现方案

1. 安装必要NuGet包

在项目中安装Windows服务适配包,版本选择匹配.NET 5.0的5.x系列即可:

  • 包名:Microsoft.Extensions.Hosting.WindowsServices

2. 调整项目配置生成EXE可执行文件

编辑你的项目.csproj文件,确保包含以下配置:

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>net5.0</TargetFramework>
    <!-- 指定输出为可执行程序 -->
    <OutputType>Exe</OutputType>
    <!-- 针对Windows平台生成可执行文件,可根据需求选x86/x64 -->
    <RuntimeIdentifier>win-x64</RuntimeIdentifier>
    <!-- 非自包含发布也生成EXE启动器 -->
    <GenerateExecutable>True</GenerateExecutable>
  </PropertyGroup>
  <!-- 其他原有配置保留 -->
</Project>

3. 调整Program.cs启动逻辑

修改Program.cs的Host构建逻辑,添加Windows服务适配,同时固定wwwroot路径避免服务运行时工作目录异常导致静态资源找不到:

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        // 启用Windows服务运行模式
        .UseWindowsService()
        .ConfigureWebHostDefaults(webBuilder =>
        {
            // 固定wwwroot路径为程序所在目录下的wwwroot文件夹
            webBuilder.UseWebRoot(Path.Combine(AppContext.BaseDirectory, "wwwroot"));
            webBuilder.UseStartup<Startup>();
            // 如果需要指定服务监听端口,可添加以下配置
            // webBuilder.UseUrls("http://0.0.0.0:5000");
        });

4. 发布项目获取EXE文件

执行以下发布命令,即可在发布输出目录得到可执行EXE文件:
dotnet publish -c Release -r win-x64 --self-contained false
参数说明:

  • --self-contained false 表示框架依赖发布,不需要打包.NET运行时,目标机器需要提前安装.NET 5.0桌面运行时
  • 若希望不需要单独装运行时,可改为--self-contained true,发布包体积会更大

5. 使用sc.exe注册并启动服务

以管理员身份运行CMD,执行以下命令注册服务:

注意命令中binPath=、start=后必须保留一个空格
sc create "Blazor站点服务" binPath= "C:\你的发布目录\你的程序名.exe" start= auto
注册完成后启动服务:
sc start "Blazor站点服务"
如果需要停止/删除服务,可执行:

  • 停止服务:sc stop "Blazor站点服务"
  • 删除服务:sc delete "Blazor站点服务"

常见注意事项

  • 服务运行的默认账户为Local System,需要给发布目录授予读取权限,若站点有文件写入需求,需额外授予写入权限
  • 若站点监听的端口需要外部访问,需要在Windows防火墙中放行对应端口

内容的提问来源于stack exchange,提问作者Banshee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:36:01