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

如何托管.NET Core gRPC服务以实现同域内任意访问?

.NET Core 6 gRPC服务同域托管方案

Windows系统托管方式

1. 独立运行Kestrel服务

发布服务后,直接在发布目录执行命令启动:

dotnet YourGrpcService.dll

默认服务仅监听本地地址,要让同域用户访问,需修改appsettings.json,将绑定地址设为局域网IP或0.0.0.0(监听所有网卡):

"Kestrel": {
  "Endpoints": {
    "Http": {
      "Url": "http://0.0.0.0:5000"
    },
    "Https": {
      "Url": "https://0.0.0.0:5001"
    }
  }
}

2. 注册为Windows服务(后台持久运行)

避免命令窗口关闭后服务终止,可将服务注册为Windows系统服务:

  1. 安装NuGet包:
Install-Package Microsoft.Extensions.Hosting.WindowsServices
  1. 修改Program.cs,添加Windows服务支持:
var builder = WebApplication.CreateBuilder(args);
builder.Host.UseWindowsService(); // 启用Windows服务托管
// 其他gRPC配置代码...
var app = builder.Build();
// 中间件配置...
app.Run();
  1. 发布后,用命令注册并启动服务:
sc create GrpcServiceDemo binPath= "C:\发布目录路径\YourGrpcService.exe"
sc start GrpcServiceDemo

Linux系统托管方式

1. 独立运行Kestrel服务

将服务发布为Linux目标,上传到服务器后执行:

dotnet YourGrpcService.dll

同样修改appsettings.json绑定0.0.0.0,确保同域用户可访问。

2. 注册为Systemd服务(开机自启+后台运行)

  1. 创建systemd服务配置文件/etc/systemd/system/grpc-service.service:
[Unit]
Description=自定义gRPC服务
After=network.target

[Service]
WorkingDirectory=/var/grpc-service
ExecStart=/usr/bin/dotnet /var/grpc-service/YourGrpcService.dll
Restart=always
RestartSec=10
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production

[Install]
WantedBy=multi-user.target
  1. 重载systemd并启动服务:
sudo systemctl daemon-reload
sudo systemctl start grpc-service
sudo systemctl enable grpc-service # 设置开机自启

通用配置注意事项

  • 开放服务器防火墙端口(如5000、5001),确保同域内设备能访问。
  • 若需HTTPS,可通过Kestrel直接加载PFX证书,或用Nginx反向代理统一配置SSL(Nginx配置示例与Windows端一致,转发请求到Kestrel端口即可)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 18:57:45