当我从 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);
最佳答案
根据 aws 文档,使用以下方式包装对 GetObject 的调用是正确的:
http://docs.amazonwebservices.com/sdkfornet/latest/apidocs/html/M_Amazon_S3_AmazonS3_GetObject.htm
这消除了与 GetObject 方法相关的所有异常
关于amazon-s3 - Amazon 的 WSACancelBlockingCall 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5425511/