我正在使用 Docker 容器开发一个 .Net api,但目前要在 swagger 中发出 GET 请求,它会返回
" The ConnectionString property has not been initialized."
,这与数据库连接失败有关。
这是招摇的错误:
这是包含 Postgresql 映像设置的
docker-compose.yml
文件:
`services:
db:
image: postgres
restart: always
environment:
POSTGRES_USER: postgres
POSTGRES_DB: my_db
POSTGRES_PASSWORD: example
volumes:
- postgres-data:/var/lib/postgresql/data
adminer:
image: adminer
restart: always
ports:
- 8080:8080
app:
build:
context: .
dockerfile: ./Dockerfile
ports:
- 5000:80
depends_on:
- db
volumes:
postgres-data:`
这是
appSetting.json
中的ConnectionString:
`{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
},
"ConnectionStrings": {
"DefaultConnection": "Host=db;Port=5432;Database=my_db;Username=postgres;Password=example"
}
},
"AllowedHosts": "*"
}
`
最后这是
Program.cs
中的 dbContext 注入:
`builder.Services.AddDbContext<EnrollAppTesting>(o => {
o.UseNpgsql(builder.Configuration.GetConnectionString("DefaultConnection"));
}
);`
我本来希望将基本的Api操作(GET,POST,PUT,DELETE)放入数据库中,但显然数据库没有配置好也没有解决。
您是否尝试过在 Docker 容器之外进行调试?我注意到您的文件名是“appSetting.json”,而默认名称通常是“appsettings.json”,但也许这是您的帖子中的拼写错误,而不是您的文件名中的拼写错误。请记住,Linux 文件系统区分大小写。这也可能在这里发挥作用。