从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);
答案 0 :(得分:2)
根据aws文档,使用:
包装对GetObject的调用是正确的http://docs.amazonwebservices.com/sdkfornet/latest/apidocs/html/M_Amazon_S3_AmazonS3_GetObject.htm
这消除了与GetObject方法相关的所有异常