Amazon的WSACancelBlockingCall异常

时间:2011-03-24 21:05:31

标签: amazon-s3

从asp.net应用程序使用Amazon S3读取/存储对象时偶尔会出现异常。

例外说: 无法从传输连接读取数据:通过调用WSACancelBlockingCall中断阻塞操作。调用WSACancelBlockingCall

中断了阻塞操作
at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)

关于如何找到导致此错误原因的任何想法?

这是我的阅读功能:

    public Image GetImage(string fullKey, out string errorMessage)
    {
        errorMessage = null;
        try
        {
            GetObjectResponse response = s3Client.GetObject(new GetObjectRequest()
            {
                BucketName = BucketName,
                Key = fullKey,
                Timeout = ImportTimeout
            });
            return Image.FromStream(response.ResponseStream);
        }
        catch (Exception e)
        {
            errorMessage = e.Message;
            Log.Current.WriteError(e);
        }
        return null;
    }

s3Client在此类的构造函数中初始化:

s3Client = AWSClientFactory.CreateAmazonS3Client(AWSAccessKey, AWSSecretKey);

1 个答案:

答案 0 :(得分:2)

根据aws文档,使用:

包装对GetObject的调用是正确的

http://docs.amazonwebservices.com/sdkfornet/latest/apidocs/html/M_Amazon_S3_AmazonS3_GetObject.htm

这消除了与GetObject方法相关的所有异常