C# 在c中获取amazon web服务未签名的URL#

C# 在c中获取amazon web服务未签名的URL#,c#,amazon-web-services,amazon-s3,unsigned,C#,Amazon Web Services,Amazon S3,Unsigned,我正在使用AmazonSDK for.net 我已经在我的bucket文件夹中上传了一个文件,现在我想用这个代码获取该文件的url GetPreSignedUrlRequest request = new GetPreSignedUrlRequest(); request.BucketName = "my-new-bucket2"; request.Key = "Images/Tulips.jpg"; request.Expires = Date

我正在使用AmazonSDK for.net 我已经在我的bucket文件夹中上传了一个文件,现在我想用这个代码获取该文件的url

 GetPreSignedUrlRequest request = new GetPreSignedUrlRequest();
        request.BucketName = "my-new-bucket2";
        request.Key = "Images/Tulips.jpg";
        request.Expires = DateTime.Now.AddHours(1);
        request.Protocol = Protocol.HTTP;
        string url = s3.GetPreSignedURL(request);
但这是返回带有密钥、退出日期和签名的url,但事实上我想在没有它们的情况下获取url,没有其他方法来获取url

**我试过的东西**

我搜索并发现我必须更改文件的权限

上传时我已更改文件的权限

request.CannedACL = S3CannedACL.PublicRead;
但它仍然返回相同的url

当我删除keyid、过期和签名时,它就会工作
但是我怎样才能不使用它来获取url,或者我必须手动执行它呢?这是经过设计的。如果您知道bucket名称和密钥,那么您就拥有了构建URL所需的一切。例如,这里的bucketname是
yourbcketname
,键是
this/is/your/key.jpg


希望有帮助

我只是浏览了他们的文档,没有找到返回绝对url的方法。然而,我真的相信有一个是我看不到的。现在,您可以通过从结果中提取绝对url来解决问题:

GetPreSignedUrlRequest request = new GetPreSignedUrlRequest();
        request.BucketName = "my-new-bucket2";
        request.Key = "Images/Tulips.jpg";
        request.Expires = DateTime.Now.AddHours(1);
        request.Protocol = Protocol.HTTP;
        string url = s3.GetPreSignedURL(request);
        index = url.IndexOf("?");
if (index > 0)
   string absUrl = url.Substring(0, index);

希望有帮助:)

您找到解决方案了吗?