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

.NET MAUI调用gRPC服务抛出Grpc.Core.RpcException求助

解决.NET MAUI安卓客户端无法连接本地ASP.NET 6 gRPC服务的问题

问题背景

基于ASP.NET 6开发的gRPC后端服务启动正常,WPF客户端通过HTTPS地址(https://127.0.0.1:5005/)可成功调用Ping测试接口,但.NET MAUI安卓客户端使用HTTP地址(http://127.0.0.1:5000/)调用时,抛出Grpc.Core.RpcException,错误提示连接被拒绝(SocketException 111)。

解决方案

1. 修改gRPC服务的监听地址

ASP.NET 6默认仅监听localhost,导致局域网内的安卓模拟器无法访问。需配置服务监听所有网络接口:
在服务的Program.cs中添加地址配置:

var builder = WebApplication.CreateBuilder(args);

// 让服务监听所有IP的HTTP和HTTPS端口
builder.WebHost.UseUrls("http://0.0.0.0:5000", "https://0.0.0.0:5005");

builder.Services.AddGrpc();

var app = builder.Build();
app.MapGrpcService<AuthenticationService>();

app.Run();

2. 替换MAUI客户端的连接地址

安卓模拟器中的127.0.0.1指向模拟器自身,而非开发主机,需替换为模拟器专属的主机映射地址:

  • Android Studio模拟器:使用10.0.2.2
  • Genymotion模拟器:使用10.0.3.2

修改MAUI客户端的通道创建代码:

_grpcChannel = GrpcChannel.ForAddress("http://10.0.2.2:5000/", new GrpcChannelOptions()
{
    MaxReceiveMessageSize = 16 * 1024 * 1024,
    MaxSendMessageSize = 16 * 1024 * 1024
});

_authenticationClient = new AuthenticationClient(_grpcChannel);
_authenticationClient.Ping(new PingRequest());

3. 配置MAUI安卓的网络权限

确保安卓应用拥有网络访问权限,在Platforms/Android/AndroidManifest.xml中添加权限声明:

<manifest ...>
    <uses-permission android:name="android.permission.INTERNET" />
    <!-- 其他权限配置 -->
</manifest>

4. 验证服务的HTTP gRPC支持

确认gRPC服务在HTTP端口正常运行:

  • 启动服务后,在开发主机上使用grpcurl工具测试(需提前安装):
grpcurl -plaintext localhost:5000 list

若能列出gRPC服务接口,说明HTTP模式下服务正常。

5. 检查网络连通性

在安卓模拟器的浏览器中访问http://10.0.2.2:5000(Android Studio模拟器),若能打开服务页面,说明网络连通正常;若无法访问,需检查主机防火墙是否允许5000端口的入站连接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 19:31:02