如何配置多个Ngrok隧道运行多.NET应用对接Graph API不同订阅
解决方案步骤
1. 核心问题修正
你当前配置的核心错误是两个应用都占用了相同的本地端口,且Ngrok隧道都指向同一个本地端口,按以下顺序修改即可解决:
步骤1:为每个.NET应用配置独立监听端口
修改每个应用的launchsettings.json,分别指定不重复的端口,示例配置如下:
- 第一个应用配置:
"msgraphapp1": { "commandName": "Project", "launchBrowser": true, "launchUrl": "api/values", "applicationUrl": "https://localhost:5001;http://localhost:5000", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" }
- 第二个应用配置:
"msgraphapp2": { "commandName": "Project", "launchBrowser": true, "launchUrl": "api/values", "applicationUrl": "https://localhost:5003;http://localhost:5002", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" }
步骤2:修正Ngrok配置映射不同端口
修改ngrok.yml,让两个隧道分别指向不同应用的本地HTTP端口:
authtoken: 你的ngrok授权token log: ngrok.log tunnels: app1: addr: 5000 proto: http host_header: localhost:5000 app2: addr: 5002 proto: http host_header: localhost:5002
启动Ngrok后会生成两个独立的公网HTTPS地址,分别对应两个本地应用。
步骤3:同步修改应用侧配置
每个应用的appsettings.json里的Ngrok字段,分别填写对应隧道的公网HTTPS地址,同时在Graph API的订阅配置中,通知URL也要和对应应用的Ngrok地址保持一致。
2. 替代隧道工具方案(可选,适配Graph场景更便捷)
如果不想手动配置Ngrok,可以使用微软官方Dev Tunnels,直接集成在Visual Studio中,无需额外安装配置,支持自动生成公网HTTPS地址,原生适配Graph API通知要求。
额外注意事项
- Ngrok免费版重启后公网地址会变化,每次重启后需要同步更新应用配置和Graph订阅的通知地址
- 每个应用的Azure AD应用注册、订阅ID要独立配置,避免订阅通知混淆
内容的提问来源于stack exchange,提问作者ingo_ww
相关产品推荐
相关产品推荐

