[英]ObjectDisposedException on AWS ListBuckets call in Unity3D
我正在尝试在Unity3D游戏中使用AWS .NET SDK。 我已经使用了3.5 dll,并在我的项目中使用了该dll。 为了测试它们是否都正常工作,我只是尝试列出所有可用的存储桶,我已经使用Cloudberry检查了所有凭据和权限是否正确,因此应该没有问题。
抛出异常:
ObjectDisposedException:在处置对象后使用该对象。 System.Net.HttpWebResponse.CheckDisposed()System.Net.HttpWebResponse.GetResponseHeader(System.String headerName)(包装带检查的远程调用)System.Net.HttpWebResponse:GetResponseHeader(字符串)Amazon.Runtime.Internal.Transform。 HttpWebRequestResponseData.GetHeaderValue(System.String名称)Amazon.S3。内部S3。内部。
逐步执行代码后,该错误似乎出现在读取var res = client.ListBuckets();
。 这是正在使用的代码。
public class FileStorage
{
private const string accessKey = @"access_key";
private const string secretKey = @"secret_key";
private const string bucketName = @"bucket_name";
private AmazonS3Client client;
private AmazonS3Config config;
public FileStorage()
{
config = new AmazonS3Config
{
ServiceURL = "http://s3.amazonaws.com"
};
}
public void ListBuckets()
{
var client = new AmazonS3Client(accessKey, secretKey, config);
var res = client.ListBuckets();
foreach (S3Bucket b in res.Buckets)
{
Debug.Log(b.BucketName);
}
}
}
我已经完成了该课程,并将其放入运行.NET 3.5的Visual Studio项目中进行测试,它工作得很好,并列出了我期望的所有存储桶。
该错误感觉无济于事,所以我不确定这是否是库和Unity的问题,或者我的代码有问题。 是什么原因引起的,还是有人知道解决方案?
想要一模一样的东西,并遇到相同的问题。
这不是完美的方法,但这是解决方法:
结帐https://github.com/aws/aws-sdk-net
你必须打补丁
Amazon.Runtime.Internal.Unmarshaller
private void Unmarshall(IExecutionContext executionContext)
HttpsResponse被放置在finally块中。 如果您仅对此发表评论,那么您就可以重做。
我认为这是旧的Mono运行时的问题,但我也无法理解为什么这行得通。 但是,由于我只希望它能起作用... :-) GC也会清理响应对象,因此您甚至不会遇到麻烦。
顺便说一句:这实际上真的很容易做到。 只需签出项目。 打开3.5版本。 构建立即为我工作。 因此,这大约需要10分钟。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.