.NET 中使用 Minio 遇到的一些坑
本文总结了在 .NetCore 中使用 Minio 的过程中遇到的一些问题。
连接客户端时报错
在连接客户端时,报错:Minio.Exceptions.InvalidEndpointException: MinIO API responded with message=No path allowed in endpoint.
连接代码为:
1 | MinioClient minioClient = new MinioClient("https://XXXX:9000",accessKey:"Q3AM3UQ867SPQQA43P2F",secretKey:"zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG").WithSSL(); |
解决方法:
把 url 的前缀 https://
去掉即可。
签名验证失败
在使用 minioClient
时,报错:
MinIO API responded with message=The request signature we calculated does not match the signature you provided. Check your key and signing method.
解决办法:
出现这种问题的原因是 minio 在校验 signature 是否有效的时候,必须从 http header 里面获取 host,而我们这里没有对 header 作必要的处理。如果源请求未携带这个头,则 minio 处无法获取请求头中的 host。
可以在 nginx 中添加如下配置解决:
1 | location / |
参考:
http://www.dreamwu.com/post-2068.html
https://docs.min.io/docs/setup-nginx-proxy-with-minio.html
https://segmentfault.com/a/1190000019422246
访问bucket被拒绝
当调用 BucketExistsAsync("public")
时,报错:MinIO API responded with message=Access denied on the resource: public/.
解决办法: