You can now upload a file through the UploadEstimate class using a stream.
Added a DownloadFileToStream function to download a file to a stream.
Corrected an issue with long file paths.
Corrected an issue where a file would be locked while uploading or hashing.
The component now targets .NET Framework 4.0.
The component now uses AlphaFS to work with file paths longer than 260 characters. See http://alphafs.alphaleonis.com/. Support for long file names can be disabled by setting the AllowWin32 property to false.
The CalculateMultipartETagFromFile function has been added to calculate the etag the same way a file uploaded through Amazon S3 multipart upload does.
Added IgnoreSSLCertificateErrors property to the upload and download classes. If the property is true an error will not be generated if an SSL certificate is invalid. The default value is false.
The sample projects have been updated to reference the SprightlySoft AWS Component NuGet package.
The GetAWSSignatureVersion4Value function has been updated to generate a valid signature version 4 authorization value when used for Amazon S3 requests.
The upload functions now have the ability to upload from a stream.
The Proxy property on all classes has been changed from the System.Net.WebProxy type to the System.Net.IWebProxy type. The change allows you to use the DefaultCredentials of the proxy server when using the DefaultWebProxy.
You can now set an Accept header when making a request.
Fixed memory issue in the DownloadEstimate class related to an event handler not being released after use.
You can now set a Referer header when making a request.
Corrected a problem in the GetAWSSignatureVersion4Value function where an incorrect value would be returned when a URL contained concurrent spaces.
Corrected a problem in the GetAWSSignatureVersion4Value function where the colon character would not be encoded when it was part of a query string.
Corrected a problem in the GetS3AuthorizationValueShared function where the incorrect value would be returned when the bucket name contained the underscore character.
Added a ProgressUpdateMilliseconds property and a ProgressUpdateEvent event in the DownloadEstimate and UploadEstimate classes. Use these to raise a ProgressUpdateEvent every ProgressUpdateMilliseconds.
Added a AbortIfNoProgressChangedSeconds property and a ProgressUpdateEvent event in the DownloadEstimate and UploadEstimate classes. Use this to abort a transfer is there has been no progress after the AbortIfNoProgressChangedSeconds value.
Added a Glacier example to the AllServicesGettingStarted sample project.
Updated the Product Advertising API examples in the AllServicesGettingStarted sample project.
Added S3Upload and S3Delete to the C# sample projects.
Added functions for Amazon Glacier. These include
Fixed a bug related to bucket names with capitalized letters in
The GetS3AuthorizationValue function would fail to generate the correct signature for some third party providers that are compatible with the S3 API.
A new function called GetS3AuthorizationValueByParts has been created and it exists in the REST, Upload, and Download classes. This function allows you to manually specify the bucket name when generating a signature.
Fixed a bug with setting the content-length during a POST request in the REST class.
Fixed memory issue in the UploadEstimate class related to an event handler not being released after use.
Added an example of using S3 Server Side Encryption during an upload in the S3AllOperations sample project.
Added a Credentials properties the REST class. This property is useful when calling non-Amazon web services that requires authentication using a System.Net.NetworkCredential value.
Added a IgnoreSSLCertificateErrors properties the REST class. This will prevent an error for being raised if calling a https URL with an invalid SSL certificate.
Added a AllowAutoRedirect properties the REST class. This specifies if redirect responses are automatically followed.
Fixed a bug where a large TimeoutSeconds value caused an arithmetic overflow.
Added TimeoutSeconds and ReadWriteTimeoutSeconds properties to the Upload, Download, and REST classes.
The REST class now POSTs Unicode characters correctly.
Improved the canceling of a download during an error in the Download class.
Fixed an incorrect ErrorNumber in the Upload class.
The LogData now contains the ErrorNumber and ErrorDescription in the REST, Upload, and Download classes.
Made a change to the acceptable HTTP Range header value in the DownloadFile
function. Example: Setting "Range:bytes=1000-" will now download byte index
1000 to the end of the file.
Fixed a bug where a file would remain in use after a transfer timed out in the
Fixed a problem in CalculateETagFromFile, CalculateMD5FromFile and UploadFile where ByteRangeStart and ByteRangeEnd where the same value. This situation occurs in 1 byte parts.
Added an example for Amazon Simple Email Service to the AllServicesGettingStarted sample project.
Added an example for AWS CloudFormation to the AllServicesGettingStarted sample project.
Added examples for working with bucket website configuration to the S3AllOperations sample project.
Added an example for AWS Elastic Beanstalk to the AllServicesGettingStarted sample project.
Corrected a bug in the S3AllOperations C# sample project. The create bucket code was using GET instead of PUT.
Corrected a problem in the GetSignatureVersion2Value method where special characters like * and ! were not encoded properly. This resulted in a "The request signature we calculated does not match the signature you provided" error from Amazon.
Multipart upload examples have been added to the S3AllOperations sample project.
Added the GetAWS3AuthorizationValue function in the REST class which generates the X-Amzn-Authorization header value for Amazon Route 53 calls.
Add the AmazonRoute53AllActions sample project which demonstrates how to make calls to Amazon Route 53.
Corrected a bug in the GetSignatureVersion2Value function.
Added an example for Amazon's Product Advertising API to the AllServicesGettingStarted sample project.
Updated the sample bucket policy in the set bucket policies example of the S3AllOperations project.
The AWS Component for .NET has replaced the S3 Component for .NET.
Introduction of the REST class. This class allows you to make REST requests against any REST service.
S3 specific classes have been moved to the S3 namespace.
Method parameters have been standardized among methods. RequestURL, RequestMethod, ExtraRequestHeaders, and send data are now common.
You must now sign S3 requests yourself. This is done by adding a x-amz-date header and Authorization header. The GetS3AuthorizationValue method generates the Authorization value for you.
The S3 UploadFile method now has a ByteRangeStart and ByteRangeEnd parameter. These parameters allow you to upload a segment of a file. This is used in a multipart upload.
The S3 CalculateETagFromFile method now has a ByteRangeStart and ByteRangeEnd parameter. Use this to generate an ETag for a part of a file. This is used in a multipart upload.
Various methods have been added to generate authorization signatures for Amazon's different services.
A sample project called AllServicesGettingStarted has been added. This project shows you how to call a method from each of Amazon's services.
The license restrictions have been removed. The component is now
The following properties have been added to the Upload, Download and
Operation classes: RequestURL, RequestMethod, RequestHeaders,
ResponseStatusCode, and ResponseStatusDescription. These properties
expose values necessary for detailed logging, error reporting and request /
Logging has been improved in the ListBucket class.
Examples have been added for the latest Amazon S3 features. These
include creating buckets in the Asia Pacific (Singapore) region,
reduced redundancy objects, applying bucket policies, and bucket
notifications. These examples can be found in the SimpleExamples
Errors now provide more details in the SimpleExamples project.