.NET MAUI安卓应用模拟器数据库连接正常,真机报错求助
解决.NET MAUI安卓真机连接SQL Server的常见问题
针对你遇到的真机连接失败问题,结合测试环境的特殊性,从以下几个方向排查:
1. 安卓真机网络与权限配置
- 确认网络环境一致性:确保安卓真机和SQL Server处于同一局域网(若使用本地测试服务器);移动数据网络下需完成端口转发且公网IP可正常访问。
- 检查安卓网络权限:在
AndroidManifest.xml中确认添加必要权限:<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> - 允许明文流量:安卓9(API 28)及以上默认禁止明文网络请求,若SQL Server未启用加密,需在
AndroidManifest.xml的application标签添加:android:usesCleartextTraffic="true"
2. SQL Server与网络防火墙细节
- 强制使用IP和端口:连接字符串中直接使用服务器IP而非机器名(真机可能无法解析局域网主机名),并明确指定端口:
"Server=192.168.x.x,1433;Database=YourDB;User Id=xxx;Password=xxx;Encrypt=False;Connection Timeout=120" - 验证端口与防火墙:
- 确认SQL Server TCP/IP协议监听1433端口(在SQL Server配置管理器中查看TCP/IP的IP地址列表,确保
TCP Port设为1433)。 - 服务器防火墙需开放TCP 1433端口(若使用命名实例,还要开放UDP 1434端口并启动SQL Server Browser服务)。
- 确认SQL Server TCP/IP协议监听1433端口(在SQL Server配置管理器中查看TCP/IP的IP地址列表,确保
- 关闭加密测试:临时在连接字符串中添加
Encrypt=False;TrustServerCertificate=True,排除加密握手导致的预登录错误。
3. 真机网络连通性测试
在安卓真机上通过终端工具(如Termux)执行以下命令,验证基础连通性:
- 测试服务器可达性:
ping 192.168.x.x - 测试端口开放:
telnet 192.168.x.x 1433或nc -zv 192.168.x.x 1433
如果ping不通或端口无法连接,优先排查网络路由、防火墙拦截问题。
4. .NET MAUI安卓特定适配
- 禁用硬件加速(临时测试):部分设备的硬件加速可能影响网络请求,在
AndroidManifest.xml的application标签添加:android:hardwareAccelerated="false" - 更新SQL Client依赖:确保项目中使用的
Microsoft.Data.SqlClient或System.Data.SqlClient是最新稳定版本,旧版本可能存在安卓平台兼容性问题。
内容的提问来源于stack exchange,提问作者JuliusB
相关产品推荐
相关产品推荐

