提问人:Edmond 提问时间:11/13/2023 最后编辑:Edmond 更新时间:11/14/2023 访问量:22
Dapr - “调用失败,id:webapi,错误:找不到服务:webapi”
Dapr - "failed to invoke, id: webapi, err: couldn't find service: webapi"
问:
我有一个 .net web api,我在其中安装了“dotnet add package Dapr.AspNetCore”,并将其包含在服务集合中:
services.AddControllers().AddDapr();
app.UseEndpoints(e =>
{
e.MapSubscribeHandler();
e.MapControllers();
});
我有这个POST方法:
// Route is /login
[Route(Program.ROOT + Program.TOKEN)]
[HttpPost]
[Consumes("application/json")]
public async Task<IActionResult> Login([FromBody][Required] JsonDocument jsonData)
{
IResult result = await Task.Run(() => _userCommander.LoginUser(jsonData));
return result.Ok ? Ok(result.Value) : BadRequest(result.Value);
}
我运行了 dapr init 并将配置存档在 $HOME/.dapr 中。 我目前只在 program.cs 所在的 API 文件夹中使用此终端命令在本地运行 dapr。我已经尝试了有和没有应用程序协议:
dapr run --app-id webapi --app-port 51669 --dapr-http-port 3500 --app-protocol=https -- dotnet run
当我使用 dapr list 时,我可以验证 webapi 服务是否正在运行:
APP ID HTTP PORT GRPC PORT APP PORT COMMAND AGE CREATED DAPRD PID CLI PID APP PID
webapi 3500 53942 51669 dotnet run 3m 2023-11-13 13:56.24 8192 8184 8193
当我尝试向我的端点发送发布请求时,它找不到要调用的服务。我通过 Postman 发送我需要发送的 Json 正文以及以下 url:
http://localhost:3500/v1.0/invoke/webapi/method/login
这会导致以下错误消息:
{
"errorCode": "ERR_DIRECT_INVOKE",
"message": "failed to invoke, id: webapi, err: couldn't find service: webapi"
}
我不明白为什么当我使用 dapr list 时它找不到 webapi 服务并且可以在那里看到该服务。在下图中,有我在项目上运行 dapr 时的日志。
答:
0赞
Ester Kaufman
12/1/2023
#1
某些防病毒/安全软件可能会阻止 mdns 请求(这是 dapr 在本地运行时用于服务发现的软件)。
对我来说,禁用迈克菲解决了这个问题。
它与我的 VPN 配合得很好。但这也可能有助于在 VPN 关闭时尝试 diable 并再次检查。
评论