在浏览完网络之后,我完全卡在了一个应用程序上,我正在构建一个应用程序,使用C# (针对.NET 4.5)将目录推送到Amazon。我在使用UploadDirectory(TransferUtilityUploadDirectoryRequest)类的NullReferenceExceptions方法推送目录文件的代码行上获取TransferManager。问题是我找不到什么是空的!调试器也不会显示任何null,所以这里显然遗漏了一些东西。
我读到,如果您要上传到包含句点的存储桶,则需要将协议更改为HTTP,否则可能会引发NullReferenceException,但是我也这样做了,并且继续接收错误,即使我为测试创建了另一个没有句点的桶。
代码中直到&包括导致异常的行的部分如下所示。名为S3Info的类只是我创建的一个助手类,它只存储一些配置信息,比如访问/秘密密钥和其他信息:
public static void uploadDirectories(S3Info info, List<DirectoryInfo> dirs, Logger logger = null)
{
AmazonS3Config alterConfig = new AmazonS3Config();
alterConfig.CommunicationProtocol = Protocol.HTTP;
AmazonS3Client s3Client = new AmazonS3Client(info.getCredentials(), alterConfig);
TransferUtility directoryTransferUtil = new TransferUtility(s3Client);
TransferUtilityUploadDirectoryRequest uploadDirRequest;
PutObjectRequest completeFileUploadRequest;
uint uploadSuccessCount = 0;
if (dirs == null || dirs.Count == 0)
{
logger.log("Nothing to upload.");
return;
}
//upload directory with PDFs
foreach (DirectoryInfo dir in dirs)
{
try
{
//configure upload request
uploadDirRequest = new TransferUtilityUploadDirectoryRequest();
uploadDirRequest.BucketName = info.selectedBucket.BucketName;
uploadDirRequest.Directory = dir.FullName;
uploadDirRequest.KeyPrefix = dir.Name + @"\";
uploadDirRequest.SearchOption = SearchOption.TopDirectoryOnly;
uploadDirRequest.SearchPattern = "*.pdf";
uploadDirRequest.Timeout = 600000; //10 minutes
//upload directory!
directoryTransferUtil.UploadDirectory(uploadDirRequest); //exception thrown here我在这一点上有点卡住了,所以我愿意接受社区能提供的任何建议。谢谢。
编辑:堆栈跟踪-
Object reference not set to an instance of an object. :
at Amazon.S3.Transfer.Internal.UploadDirectoryCommand.Execute()
at Amazon.S3.Transfer.TransferUtility.UploadDirectory(TransferUtilityUploadDirectoryRequest request)
at S3Delivery.AmazonActions.uploadDirectories(S3Info info, List`1 dirs, Logger logger) in c:\Users\jblacker\Documents\Visual Studio 2012\Projects\S3Delivery\S3Delivery\AmazonActions.cs:line 173第173行是上文所述的一行。
发布于 2013-08-27 21:42:53
今天早些时候发布了一个补丁版本的SDK (1.5.30.1版本),解决了这个问题。
发布于 2013-08-28 12:53:25
我在AWS论坛上发布了同样的问题。显然,在1.5.30版的UploadDirectory() SDK中,.NET方法的API被破坏了。
Amazon刚刚发布了一个版本1.5.30.1的补丁
https://stackoverflow.com/questions/18468215
复制相似问题