我正在开发一个应用程序,该应用程序连接使用 Dapr(自托管)和 gRPC 客户端运行的应用程序。我使用 common.proto 和 runtime.proto。使用 DAPR CLI 时,我能够使连接正常工作。
但是当使用 DAPR 自托管实例时,使用 gRPC 端口时出现以下错误:
Grpc.Core.RpcException: 'Status(StatusCode="Internal", Detail="invoke API is not ready", DebugException="Grpc.Core.Internal.CoreErrorDetailException: {"created":"@1621435606.713000000","description":"Error received from peer ipv4:127.0.0.1:54000","file":"..\..\..\src\core\lib\surface\call.cc","file_line":1068,"grpc_message":"invoke API is not ready","grpc_status":13}")'
当我使用 dapr http 端口时
Grpc.Core.Internal.CoreErrorDetailException: {"created":"@1621435606.713000000","description":"Error received from peer ipv4:127.0.0.1:54000","file":"..\..\..\src\core\lib\surface\call.cc","file_line":1068,"grpc_message":"invoke API is not ready","grpc_status":13}")'
下面是 DAPR 服务器的 compose 文件
version: '3.4'
services:
daprserver:
image: ${DOCKER_REGISTRY-}daprserver
build:
context: .
dockerfile: Dockerfile
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=http://+:80
networks:
- daprserver-network
daprserver-dapr:
image: "daprio/dapr:latest"
command: [ "./daprd",
"-app-id", "daprserver",
"-app-port", "80",
"-dapr-http-port","53001",
"-dapr-grpc-port","53000"]
ports:
- 54000:53000 #grpc external:internal
- 54001:53001 #http external:internal
depends_on:
- daprserver
networks:
- daprserver-network
networks:
daprserver-network:
客户端代码如下:
var channel = new Channel("127.0.0.1:54000", ChannelCredentials.Insecure);
var daprClient = new Dapr.Client.Autogen.Grpc.v1.Dapr.DaprClient(channel);
var request = new InvokeServiceRequest
{
Id = "daprserver",
Message = new InvokeRequest
{
Method = "weatherforecast",
HttpExtension = new HTTPExtension
{
Verb = HTTPExtension.Types.Verb.Get,
}
}
};
var invokeResponse = daprClient.InvokeServiceAsync(request).GetAwaiter().GetResult();
var json = invokeResponse.Data.Value.ToStringUtf8();
我是否缺少设置或我的配置有任何问题?