C#S3 API DeleteObject抛出409冲突:您试图删除的存储桶不是空的

C#S3 API DeleteObject抛出409冲突:您试图删除的存储桶不是空的,c#,amazon-s3,C#,Amazon S3,试图通过S3API(AWSSDK.S3 v3.1.0.0)删除对象时 我收到以下错误消息 [WebException: The remote server returned an error: (409) Conflict.] [AmazonS3Exception: The bucket you tried to delete is not empty] 我没有试图删除存储桶,也不希望删除存储桶 这是我班上的代码: public static void Delete(string fi

试图通过S3API(AWSSDK.S3 v3.1.0.0)删除对象时 我收到以下错误消息

[WebException: The remote server returned an error: (409) Conflict.]
[AmazonS3Exception: The bucket you tried to delete is not empty]
我没有试图删除存储桶,也不希望删除存储桶

这是我班上的代码:

    public static void Delete(string filename)
    {
        using (AmazonS3Client client = new AmazonS3Client(ACCESS_KEY_ID, SECRET_ACCESS_KEY, RegionEndpoint.USEast1))
        {
            var deleteRequest = new DeleteObjectRequest();
            deleteRequest.BucketName = BUCKET;
            deleteRequest.Key = Path.GetFileName(filename); //ensure only the filename is sent as key, not the path
            client.DeleteObject(deleteRequest);
        }
    }
API非常简单,调用约定非常简单,知道为什么在调用DeleteObject时删除bucket会失败吗?

/facepalm


愚蠢的错误,调用代码正在为文件名传递NULL。只需传递正确的文件名就解决了问题。

“我不想删除bucket,也不想删除bucket。”我不熟悉Amazon S3,但您发布的代码看起来确实像是在尝试删除某些内容……它是在尝试删除一个对象,而不是bucket。您的代码看起来很像Yep,可以做到这一点。与基于典型网站行为的预期不同,bucket在根
/
对象上没有文件的位置。根对象是bucket本身,因此您的请求路径为空(ish),无意中试图删除bucket。