.NET Core Minimal APIs无法连接React Native(Expo CLI)应用求助
解决.NET Core Minimal API与Expo React Native网络连接问题
核心排查方向:HTTPS证书信任问题
React Native/Expo 默认不信任自签名HTTPS证书,这是本地开发时最常见的触发原因——毕竟.NET Core默认会生成自签名证书用于HTTPS服务。
1. 临时切换HTTP(仅开发环境测试)
修改.NET项目的launchSettings.json,将applicationUrl改为纯HTTP配置:
"profiles": { "http": { "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, "applicationUrl": "http://localhost:5000;http://你的局域网IP:5000", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } } }
重启.NET后端后,让Expo应用改用HTTP地址发起请求。如果能正常连接,就坐实了HTTPS证书的问题。
2. 让Expo信任.NET的自签名证书
步骤1:导出.NET开发证书
打开管理员权限的命令提示符,执行:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p 自定义密码(比如123456)
步骤2:安装证书到设备
- 模拟器:把导出的
.pfx文件复制到模拟器存储,进入系统设置→安全→从存储安装证书,选择该文件完成安装。 - 真机:通过邮箱/微信发送证书文件到手机,打开后按提示完成安装(需确认信任该证书)。
步骤3:开发环境临时跳过证书验证(仅开发用)
以axios请求为例,在代码中添加忽略配置:
import axios from 'axios'; import https from 'https'; const api = axios.create({ baseURL: 'https://你的.NET后端局域网IP:5001', httpsAgent: new https.Agent({ rejectUnauthorized: false }) });
注意:生产环境绝对不能使用此配置,必须替换为正规CA签发的证书。
3. 网络权限与防火墙检查
- 确保.NET后端的HTTPS端口(默认5001)未被防火墙拦截,在Windows防火墙中添加允许该端口的入站规则。
- 确认Expo应用拥有网络权限,检查
app.json:
"android": { "permissions": ["INTERNET"] }
- 手机/模拟器必须和.NET后端处于同一局域网,请求地址要使用电脑的局域网IP,而非
localhost(模拟器的localhost指向自身,不是开发电脑)。
4. 配置.NET跨域规则
React Native属于前端应用,需要.NET开启CORS支持:
在Program.cs中添加:
builder.Services.AddCors(options => { options.AddPolicy("AllowExpo", policy => policy.AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader()); }); // 注意位置:放在app.UseRouting()之后,app.MapControllers()之前 app.UseCors("AllowExpo");
内容的提问来源于stack exchange,提问作者Waseem Hassan
相关产品推荐
相关产品推荐

