首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NullReferenceException在试图将目录上载到S3 (.NET API - C#)时

NullReferenceException在试图将目录上载到S3 (.NET API - C#)时
EN

Stack Overflow用户
提问于 2013-08-27 14:26:22
回答 2查看 996关注 0票数 0

在浏览完网络之后,我完全卡在了一个应用程序上,我正在构建一个应用程序,使用C# (针对.NET 4.5)将目录推送到Amazon。我在使用UploadDirectory(TransferUtilityUploadDirectoryRequest)类的NullReferenceExceptions方法推送目录文件的代码行上获取TransferManager。问题是我找不到什么是空的!调试器也不会显示任何null,所以这里显然遗漏了一些东西。

我读到,如果您要上传到包含句点的存储桶,则需要将协议更改为HTTP,否则可能会引发NullReferenceException,但是我也这样做了,并且继续接收错误,即使我为测试创建了另一个没有句点的桶。

代码中直到&包括导致异常的行的部分如下所示。名为S3Info的类只是我创建的一个助手类,它只存储一些配置信息,比如访问/秘密密钥和其他信息:

代码语言:javascript
运行
复制
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

我在这一点上有点卡住了,所以我愿意接受社区能提供的任何建议。谢谢。

编辑:堆栈跟踪-

代码语言:javascript
运行
复制
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行是上文所述的一行。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-27 21:42:53

今天早些时候发布了一个补丁版本的SDK (1.5.30.1版本),解决了这个问题。

票数 1
EN

Stack Overflow用户

发布于 2013-08-28 12:53:25

我在AWS论坛上发布了同样的问题。显然,在1.5.30版的UploadDirectory() SDK中,.NET方法的API被破坏了。

Amazon刚刚发布了一个版本1.5.30.1的补丁

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18468215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档