Deven Liu Blog

Full-Stack Software Engineer

目标

同一台 Linux 服务器,使用 Dapr 部署两个 ASP.NET Core Web API 程序

遇到的问题

总有 1 个程序报错 grpc 连接被拒绝

发现是因为 dapr/components/ 目录下的密钥存储配置文件 secretstore.yml 有错

在代码库中存在 NuGet.config 文件时,通过 VisualStudio 为项目添加了 Dockerfile 时,自动添加的 Dockerfile 会把 NuGet.config 变为小写的 nuget.config,由于 Windows 文件系统不区分大小写,Linux 文件系统区分大小写,所以会报错,将 Dockerfile 中的 nuget.config 改为 NuGet.confg 就可以了

ASP.NET Core Identity 和 IdentityServer4 都是基于 ASP.NET Core 身份认证系统实现的一个组件,

当我们在 IdentityServer4 中集成 ASP.NET Core Identity 这个组件时,会出现一些奇怪的问题,比如看起来已经认证通过,但 WebApi 却返回 404

这是由于 Identity 会注册它自己 AuthenticationScheme,而 IdentityServer4 也会注册自己的 Scheme,我们需要在调用 services.AddAuthentication( options=> { } ) 中替换掉 Identity 的 Scheme,因为我们真正使用的是 IdentityServer4 的 Scheme。

1
2
3
4
5
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = "Bearer";
options.DefaultChallengeScheme = "Bearer";
})

必须在 services.AddIdentity<T>() 之后调用 service.AddAuthentication() 才能覆盖。

0%