在同一服务部署Web API与gRPC时的端口403错误排查
Web API与gRPC共存时5000端口403错误的解决方法
问题根源是Kestrel配置未明确监听5000端口,添加gRPC后默认端点配置被覆盖,导致原本预期承载Web API的5000端口无法正常响应。按以下方式调整配置即可解决:
修正后的Kestrel配置
public static void BootstrapGrpc(this WebApplicationBuilder builder) { builder.WebHost.ConfigureKestrel(options => { var http2 = options.Limits.Http2; http2.InitialConnectionWindowSize = 1024 * 1024 * 2; // 2 MB http2.InitialStreamWindowSize = 1024 * 1024; // 1 MB #if DEBUG options.ListenAnyIP(5001, listenOptions => { listenOptions.Protocols = HttpProtocols.Http1; listenOptions.UseHttps(); }); #endif // 新增5000端口监听,指定为HTTP1协议(适配Web API) options.ListenAnyIP(5000, listenOptions => { listenOptions.Protocols = HttpProtocols.Http1; // 生产环境启用HTTPS的话,取消下方注释 // listenOptions.UseHttps(); }); options.ListenAnyIP(8080); options.ListenAnyIP(8585, listenOptions => { listenOptions.Protocols = HttpProtocols.Http2; }); }); builder.Services.AddCodeFirstGrpc(); _isGrpcBootstrapped = true; }
补充检查项
- 确认Web API的路由已正常注册(比如调用
app.MapControllers()),无需调整与gRPC端点的注册顺序,但保持逻辑清晰即可。 - Azure App Services环境下,需在应用程序设置中配置端口映射,确保5000端口被正确暴露。
- 若启用HTTPS,需确认证书配置无误,避免因证书问题触发403错误。
错误截图:
内容的提问来源于stack exchange,提问作者Tsukasa
相关产品推荐
相关产品推荐

