Fab*_*uez 4 c# asp.net grpc asp.net-core-3.1
我有一个现有的 .net core 应用程序,其中包含两个 grpc 服务(使用 grpc.core)。我有两台服务器
Server serverA = new Server(channelOptions)
{
Ports = { new ServerPort("0.0.0.0", 8090, credentials) },
};
serverA.services.add(serviceA);
serverA.Start()
Server serverB = new Server(channelOptions)
{
Ports = { new ServerPort("0.0.0.0", 8091, credentials) },
};
serverB.services.add(serviceB);
serverB.Start()
Run Code Online (Sandbox Code Playgroud)
现在,我尝试从 grcp.core 迁移到 asp.net core grpc,但在添加服务时找不到使用两个不同端口添加两个服务的方法:
services.AddSingleton<ServiceA>();
services.AddSingleton<ServiceB>();
Run Code Online (Sandbox Code Playgroud)
两者都在同一个端口,有没有办法在 asp.net core grpc 中为每个服务设置一个端口?
在 3.1 模板项目中,ASP.NET Core gRPC Service您可以通过 launchsettings 监听两个端口:
"applicationUrl": "https://localhost:5001;https://localhost:5002",
Run Code Online (Sandbox Code Playgroud)
并添加基于端口的分支路由,如下所示:
app.UseRouting();
app.MapWhen(context => context.Connection.LocalPort == 5001,
iab => iab.UseRouting().UseEndpoints(endpoints => endpoints.MapGrpcService<GreeterService>()));
app.MapWhen(context => context.Connection.LocalPort == 5002,
iab => iab.UseRouting().UseEndpoints(endpoints => endpoints.MapGrpcService<GreeterServiceV2>()));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2358 次 |
| 最近记录: |