正在向ASP.NET Core DI容器注册"类型化"gRPC客户端



我有一个GrpcService类,它在其构造函数中接收gRPC客户端,如下所示:

public class GrpcService : IService 
{
private readonly GrpcClient grpcClient;

public GrpcService(GrpcClient grpcClient)
{
this.grpcClient = grpcClient;
}

//...
}

我已经使用通用的AddGrpcClient扩展方法在Startup类中注册了gRPC客户端:

services.AddGrpcClient<GrpcClient>(o =>
{
o.Address = new Uri("https://localhost:5001");
});

现在我想将GrpcService类注入到API控制器中。我的问题是;在Startup类中注册GrpcService的正确方法是什么?

我确实尝试了以下操作,但没有成功:

services.AddGrpcClient<GrpcService>(); 

目前我有以下代码,它运行良好:

services.AddSingleton<IService, GrpcService>();

然而,我不确定使用singleton是否是正确的生存期,特别是当gRPC客户端在内部使用HttpClient时?

根据MS文档,这将是一个单例。

你要找的是这里

如果将services.AddGrpcClient<GrpcService>();更改为services.AddGrpcClient<GrpcClient>();,并在使用者构造函数中注入GrpcClient,它应该可以工作。

最新更新