diff --git a/Lib/AspNet/Microsoft.WindowsAzure.Storage.Facade/FacadeLib/Microsoft.WindowsAzure.Storage.Shared.Protocol.Constants.cs b/Lib/AspNet/Microsoft.WindowsAzure.Storage.Facade/FacadeLib/Microsoft.WindowsAzure.Storage.Shared.Protocol.Constants.cs index 2fb70a057..7694041e3 100644 --- a/Lib/AspNet/Microsoft.WindowsAzure.Storage.Facade/FacadeLib/Microsoft.WindowsAzure.Storage.Shared.Protocol.Constants.cs +++ b/Lib/AspNet/Microsoft.WindowsAzure.Storage.Facade/FacadeLib/Microsoft.WindowsAzure.Storage.Shared.Protocol.Constants.cs @@ -246,7 +246,7 @@ public static class EncryptionConstants public const string TableEncryptionKeyDetails = "_ClientEncryptionMetadata1"; public const string TableEncryptionPropertyDetails = "_ClientEncryptionMetadata2"; public const string AgentMetadataKey = "EncryptionLibrary"; - public const string AgentMetadataValue = ".NET 8.2.1"; + public const string AgentMetadataValue = ".NET 8.3.0"; } } diff --git a/Lib/AspNet/Microsoft.WindowsAzure.Storage.Facade/FacadeLib/Microsoft.WindowsAzure.Storage.Shared.Protocol.EncryptionConstants.cs b/Lib/AspNet/Microsoft.WindowsAzure.Storage.Facade/FacadeLib/Microsoft.WindowsAzure.Storage.Shared.Protocol.EncryptionConstants.cs index 9b6c1baa7..3a918453a 100644 --- a/Lib/AspNet/Microsoft.WindowsAzure.Storage.Facade/FacadeLib/Microsoft.WindowsAzure.Storage.Shared.Protocol.EncryptionConstants.cs +++ b/Lib/AspNet/Microsoft.WindowsAzure.Storage.Facade/FacadeLib/Microsoft.WindowsAzure.Storage.Shared.Protocol.EncryptionConstants.cs @@ -10,7 +10,7 @@ public static class EncryptionConstants public const string TableEncryptionKeyDetails = "_ClientEncryptionMetadata1"; public const string TableEncryptionPropertyDetails = "_ClientEncryptionMetadata2"; public const string AgentMetadataKey = "EncryptionLibrary"; - public const string AgentMetadataValue = ".NET 8.2.1"; + public const string AgentMetadataValue = ".NET 8.3.0"; } } \ No newline at end of file diff --git a/Lib/AspNet/Microsoft.WindowsAzure.Storage.Facade/FacadeLib/Microsoft.WindowsAzure.Storage.Shared.Protocol.HeaderConstants.cs b/Lib/AspNet/Microsoft.WindowsAzure.Storage.Facade/FacadeLib/Microsoft.WindowsAzure.Storage.Shared.Protocol.HeaderConstants.cs index 551e3bb98..9474f217d 100644 --- a/Lib/AspNet/Microsoft.WindowsAzure.Storage.Facade/FacadeLib/Microsoft.WindowsAzure.Storage.Shared.Protocol.HeaderConstants.cs +++ b/Lib/AspNet/Microsoft.WindowsAzure.Storage.Facade/FacadeLib/Microsoft.WindowsAzure.Storage.Shared.Protocol.HeaderConstants.cs @@ -4,9 +4,9 @@ namespace Microsoft.WindowsAzure.Storage.Shared.Protocol public static class HeaderConstants { - public static readonly string UserAgent = "Azure-Storage/8.2.1 "; + public static readonly string UserAgent = "Azure-Storage/8.3.0 "; public const string UserAgentProductName = "Azure-Storage"; - public const string UserAgentProductVersion = "8.2.1"; + public const string UserAgentProductVersion = "8.3.0"; public const string PrefixForStorageHeader = "x-ms-"; public const string TrueHeader = "true"; public const string FalseHeader = "false"; diff --git a/Lib/AspNet/Microsoft.WindowsAzure.Storage.Facade/Properties/AssemblyInfo.cs b/Lib/AspNet/Microsoft.WindowsAzure.Storage.Facade/Properties/AssemblyInfo.cs index 4874ad3b8..ef9959fc1 100644 --- a/Lib/AspNet/Microsoft.WindowsAzure.Storage.Facade/Properties/AssemblyInfo.cs +++ b/Lib/AspNet/Microsoft.WindowsAzure.Storage.Facade/Properties/AssemblyInfo.cs @@ -31,8 +31,8 @@ // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("8.2.1.0")] -[assembly: AssemblyFileVersion("8.2.1.0")] +[assembly: AssemblyVersion("8.3.0.0")] +[assembly: AssemblyFileVersion("8.3.0.0")] [assembly: InternalsVisibleTo( "Microsoft.WindowsAzure.Storage.Facade.Portable, PublicKey=" + diff --git a/Lib/AspNet/Microsoft.WindowsAzure.Storage.Facade/project.json b/Lib/AspNet/Microsoft.WindowsAzure.Storage.Facade/project.json index 0a3f1fa12..873072041 100644 --- a/Lib/AspNet/Microsoft.WindowsAzure.Storage.Facade/project.json +++ b/Lib/AspNet/Microsoft.WindowsAzure.Storage.Facade/project.json @@ -1,6 +1,6 @@ { "title": "Microsoft.WindowsAzure.Storage", - "version": "8.2.1.0", + "version": "8.3.0.0", "authors": [ "Microsoft Corporation" ], "description": "Azure Storage SDK for NetCore", diff --git a/Lib/AspNet/Microsoft.WindowsAzure.Storage/AssemblyInfo.cs b/Lib/AspNet/Microsoft.WindowsAzure.Storage/AssemblyInfo.cs index 3e9692663..82657862e 100644 --- a/Lib/AspNet/Microsoft.WindowsAzure.Storage/AssemblyInfo.cs +++ b/Lib/AspNet/Microsoft.WindowsAzure.Storage/AssemblyInfo.cs @@ -34,9 +34,9 @@ // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("8.2.1.0")] -[assembly: AssemblyFileVersion("8.2.1.0")] -[assembly: AssemblyInformationalVersion("8.2.1.0")] +[assembly: AssemblyVersion("8.3.0.0")] +[assembly: AssemblyFileVersion("8.3.0.0")] +[assembly: AssemblyInformationalVersion("8.3.0.0")] [assembly: InternalsVisibleTo( diff --git a/Lib/AspNet/Microsoft.WindowsAzure.Storage/WindowsAzure.StorageK.nuspec b/Lib/AspNet/Microsoft.WindowsAzure.Storage/WindowsAzure.StorageK.nuspec index b2d8a8076..6a643cc91 100644 --- a/Lib/AspNet/Microsoft.WindowsAzure.Storage/WindowsAzure.StorageK.nuspec +++ b/Lib/AspNet/Microsoft.WindowsAzure.Storage/WindowsAzure.StorageK.nuspec @@ -2,7 +2,7 @@ WindowsAzure.Storage - 8.2.1 + 8.3.0 Windows Azure Storage Microsoft Microsoft diff --git a/Lib/AspNet/Microsoft.WindowsAzure.Storage/project.json b/Lib/AspNet/Microsoft.WindowsAzure.Storage/project.json index aab18ebec..91d0cc090 100644 --- a/Lib/AspNet/Microsoft.WindowsAzure.Storage/project.json +++ b/Lib/AspNet/Microsoft.WindowsAzure.Storage/project.json @@ -1,5 +1,5 @@ { - "version": "8.2.1.0", + "version": "8.3.0.0", "authors": [ "Microsoft Corporation" ], "description": "Azure Storage SDK for NetCore", diff --git a/Lib/ClassLibraryCommon/Core/Util/AsyncStreamCopier.cs b/Lib/ClassLibraryCommon/Core/Util/AsyncStreamCopier.cs index 095c47be8..1077667b8 100644 --- a/Lib/ClassLibraryCommon/Core/Util/AsyncStreamCopier.cs +++ b/Lib/ClassLibraryCommon/Core/Util/AsyncStreamCopier.cs @@ -21,6 +21,7 @@ namespace Microsoft.WindowsAzure.Storage.Core.Util using System; using System.Diagnostics.CodeAnalysis; using System.IO; + using System.Runtime.ExceptionServices; using System.Threading; using System.Threading.Tasks; @@ -217,7 +218,7 @@ public async Task StartCopyStreamAsync(long? copyLength, long? maxLength) { this.cancellationTokenSourceCombined = this.cancellationTokenSourceAbort; } - + await this.StartCopyStreamAsyncHelper(copyLength, maxLength, this.cancellationTokenSourceCombined.Token).ConfigureAwait(false); } @@ -253,7 +254,7 @@ private async Task StartCopyStreamAsyncHelper(long? copyLength, long? maxLength, byte[] swap; int bytesToCopy = CalculateBytesToCopy(copyLength, 0); - int bytesCopied = await this.src.ReadAsync(readBuff, 0, bytesToCopy, token).ConfigureAwait(false); + int bytesCopied = await this.src.ReadAsync(readBuff, 0, bytesToCopy, token).ConfigureAwait(false); long totalBytes = bytesCopied; CheckMaxLength(maxLength, totalBytes); @@ -261,6 +262,7 @@ private async Task StartCopyStreamAsyncHelper(long? copyLength, long? maxLength, swap = readBuff; readBuff = writeBuff; writeBuff = swap; + ExceptionDispatchInfo readException = null; while (bytesCopied > 0) { @@ -269,10 +271,17 @@ private async Task StartCopyStreamAsyncHelper(long? copyLength, long? maxLength, Task writeTask = this.dest.WriteAsync(writeBuff, 0, bytesCopied, token); bytesToCopy = CalculateBytesToCopy(copyLength, totalBytes); - Task readTask; + Task readTask = null; if (bytesToCopy > 0) { - readTask = this.src.ReadAsync(readBuff, 0, bytesToCopy, token); + try + { + readTask = this.src.ReadAsync(readBuff, 0, bytesToCopy, token); + } + catch(Exception ex) + { + readException = ExceptionDispatchInfo.Capture(ex); + } } else { @@ -283,7 +292,13 @@ private async Task StartCopyStreamAsyncHelper(long? copyLength, long? maxLength, UpdateStreamCopyState(writeBuff, bytesCopied); + if (readException != null) + { + readException.Throw(); + } + bytesCopied = await readTask.WithCancellation(token).ConfigureAwait(false); + totalBytes = totalBytes + bytesCopied; CheckMaxLength(maxLength, totalBytes); diff --git a/Lib/Common/Core/Util/MD5Wrapper.cs b/Lib/Common/Core/Util/MD5Wrapper.cs index 58edac7a6..8622b3576 100644 --- a/Lib/Common/Core/Util/MD5Wrapper.cs +++ b/Lib/Common/Core/Util/MD5Wrapper.cs @@ -39,6 +39,8 @@ internal class MD5Wrapper : IDisposable #if WINDOWS_RT private CryptographicHash hash = null; +#elif NETCORE + private IncrementalHash hash = null; #elif (WINDOWS_PHONE && WINDOWS_DESKTOP) @@ -58,7 +60,7 @@ internal MD5Wrapper() #elif WINDOWS_PHONE throw new NotSupportedException(SR.WindowsPhoneDoesNotSupportMD5); #elif NETCORE - this.hash = MD5.Create(); + this.hash = IncrementalHash.CreateHash(HashAlgorithmName.MD5); #else this.hash = this.version1MD5 ? MD5.Create() : new NativeMD5(); #endif @@ -79,7 +81,7 @@ internal void UpdateHash(byte[] input, int offset, int count) #elif WINDOWS_PHONE && WINDOWS_DESKTOP throw new NotSupportedException(SR.WindowsPhoneDoesNotSupportMD5); #elif NETCORE - inputStream.Write(input, offset, count); + this.hash.AppendData(input, offset, count); #else this.hash.TransformBlock(input, offset, count, null, 0); #endif @@ -98,7 +100,7 @@ internal string ComputeHash() #elif WINDOWS_PHONE && WINDOWS_DESKTOP throw new NotSupportedException(SR.WindowsPhoneDoesNotSupportMD5); #elif NETCORE - return Convert.ToBase64String(this.hash.ComputeHash(inputStream.ToArray())); + return Convert.ToBase64String(this.hash.GetHashAndReset()); #else this.hash.TransformFinalBlock(new byte[0], 0, 0); return Convert.ToBase64String(this.hash.Hash); diff --git a/Lib/Common/Shared/Protocol/Constants.cs b/Lib/Common/Shared/Protocol/Constants.cs index 08ff1dfff..cd55d9a16 100644 --- a/Lib/Common/Shared/Protocol/Constants.cs +++ b/Lib/Common/Shared/Protocol/Constants.cs @@ -829,7 +829,7 @@ static HeaderConstants() /// /// Specifies the value to use for UserAgent header. /// - public const string UserAgentProductVersion = "8.2.1"; + public const string UserAgentProductVersion = "8.3.0"; /// /// Master Microsoft Azure Storage header prefix. diff --git a/Lib/WindowsDesktop/Properties/AssemblyInfo.cs b/Lib/WindowsDesktop/Properties/AssemblyInfo.cs index 815dd578d..2e376e2bc 100644 --- a/Lib/WindowsDesktop/Properties/AssemblyInfo.cs +++ b/Lib/WindowsDesktop/Properties/AssemblyInfo.cs @@ -35,8 +35,8 @@ // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("8.2.1.0")] -[assembly: AssemblyFileVersion("8.2.1.0")] +[assembly: AssemblyVersion("8.3.0.0")] +[assembly: AssemblyFileVersion("8.3.0.0")] #if SIGN [assembly: InternalsVisibleTo( diff --git a/Lib/WindowsDesktop/WindowsAzure.Storage.nuspec b/Lib/WindowsDesktop/WindowsAzure.Storage.nuspec index b2d8a8076..6a643cc91 100644 --- a/Lib/WindowsDesktop/WindowsAzure.Storage.nuspec +++ b/Lib/WindowsDesktop/WindowsAzure.Storage.nuspec @@ -2,7 +2,7 @@ WindowsAzure.Storage - 8.2.1 + 8.3.0 Windows Azure Storage Microsoft Microsoft diff --git a/Lib/WindowsPhone/Properties/AssemblyInfo.cs b/Lib/WindowsPhone/Properties/AssemblyInfo.cs index 0e3af6671..0010c84f6 100644 --- a/Lib/WindowsPhone/Properties/AssemblyInfo.cs +++ b/Lib/WindowsPhone/Properties/AssemblyInfo.cs @@ -33,8 +33,8 @@ // You can specify all the values or you can default the Revision and Build Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion("8.2.1.0")] -[assembly: AssemblyFileVersion("8.2.1.0")] +[assembly: AssemblyVersion("8.3.0.0")] +[assembly: AssemblyFileVersion("8.3.0.0")] [assembly: NeutralResourcesLanguageAttribute("en-US")] diff --git a/Lib/WindowsPhoneRT/Properties/AssemblyInfo.cs b/Lib/WindowsPhoneRT/Properties/AssemblyInfo.cs index 6cf322225..7e8b9a9ba 100644 --- a/Lib/WindowsPhoneRT/Properties/AssemblyInfo.cs +++ b/Lib/WindowsPhoneRT/Properties/AssemblyInfo.cs @@ -24,8 +24,8 @@ // // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion("8.2.1.0")] -[assembly: AssemblyFileVersion("8.2.1.0")] +[assembly: AssemblyVersion("8.3.0.0")] +[assembly: AssemblyFileVersion("8.3.0.0")] [assembly: NeutralResourcesLanguageAttribute("en-US")] [assembly: ComVisible(false)] diff --git a/Lib/WindowsRuntime/Properties/AssemblyInfo.cs b/Lib/WindowsRuntime/Properties/AssemblyInfo.cs index 3545f20b1..025259267 100644 --- a/Lib/WindowsRuntime/Properties/AssemblyInfo.cs +++ b/Lib/WindowsRuntime/Properties/AssemblyInfo.cs @@ -26,8 +26,8 @@ // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("8.2.1.0")] -[assembly: AssemblyFileVersion("8.2.1.0")] +[assembly: AssemblyVersion("8.3.0.0")] +[assembly: AssemblyFileVersion("8.3.0.0")] [assembly: ComVisible(false)] diff --git a/README.md b/README.md index 55c04f0ef..f1921497b 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Microsoft Azure Storage SDK for .NET (8.2.0) +# Microsoft Azure Storage SDK for .NET (8.3.0) The Microsoft Azure Storage SDK for .NET allows you to build Azure applications that take advantage of scalable cloud computing resources. @@ -56,7 +56,7 @@ Through the bait and switch technique, the reference assembly enables other port ## Use with the Azure Storage Emulator - The Client Library uses a particular Storage Service version. In order to use the Storage Client Library with the Storage Emulator, a corresponding minimum version of the Azure Storage Emulator must be used. Older versions of the Storage Emulator do not have the necessary code to successfully respond to new requests. -- Currently, the minimum version of the Azure Storage Emulator needed for this library is 5.4. If you encounter a `VersionNotSupportedByEmulator` (400 Bad Request) error, please [update the Storage Emulator.](https://azure.microsoft.com/en-us/downloads/) +- Currently, the minimum version of the Azure Storage Emulator needed for this library is 5.2. If you encounter a `VersionNotSupportedByEmulator` (400 Bad Request) error, please [update the Storage Emulator.](https://azure.microsoft.com/en-us/downloads/) ## Download & Install diff --git a/Test/AspNet/Facade/Microsoft.WindowsAzure.Storage.Facade.NetCore.Test/project.json b/Test/AspNet/Facade/Microsoft.WindowsAzure.Storage.Facade.NetCore.Test/project.json index 6f16b99da..1b18d734b 100644 --- a/Test/AspNet/Facade/Microsoft.WindowsAzure.Storage.Facade.NetCore.Test/project.json +++ b/Test/AspNet/Facade/Microsoft.WindowsAzure.Storage.Facade.NetCore.Test/project.json @@ -1,6 +1,6 @@ { "title": "Microsoft.WindowsAzure.Storage.Facade.NetCore.Test", - "version": "8.2.0.0", + "version": "8.3.0.0", "testRunner": "xunit", "dependencies": { @@ -16,7 +16,7 @@ "type": "platform", "version": "1.0.0" }, - "WindowsAzure.Storage": "8.2.0-facade" + "WindowsAzure.Storage": "8.3.0-facade" }, "imports": "dnxcore50" diff --git a/Test/AspNet/Facade/Microsoft.WindowsAzure.Storage.Facade.Portable/project.json b/Test/AspNet/Facade/Microsoft.WindowsAzure.Storage.Facade.Portable/project.json index 0b2cb2dd0..2892dbe41 100644 --- a/Test/AspNet/Facade/Microsoft.WindowsAzure.Storage.Facade.Portable/project.json +++ b/Test/AspNet/Facade/Microsoft.WindowsAzure.Storage.Facade.Portable/project.json @@ -1,8 +1,8 @@ { - "version": "8.2.0.0", + "version": "8.3.0.0", "supports": {}, "dependencies": { - "WindowsAzure.Storage": "8.2.0-facade" + "WindowsAzure.Storage": "8.3.0-facade" }, "frameworks": { ".NETPortable,Version=v4.5,Profile=Profile259": {} diff --git a/Test/WindowsDesktop/Properties/AssemblyInfo.cs b/Test/WindowsDesktop/Properties/AssemblyInfo.cs index 8ff834067..2ba6266f7 100644 --- a/Test/WindowsDesktop/Properties/AssemblyInfo.cs +++ b/Test/WindowsDesktop/Properties/AssemblyInfo.cs @@ -33,6 +33,6 @@ // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("8.2.1.0")] -[assembly: AssemblyFileVersion("8.2.1.0")] +[assembly: AssemblyVersion("8.3.0.0")] +[assembly: AssemblyFileVersion("8.3.0.0")] diff --git a/Test/WindowsPhone/Properties/AssemblyInfo.cs b/Test/WindowsPhone/Properties/AssemblyInfo.cs index aae706b6e..8e3bc94cd 100644 --- a/Test/WindowsPhone/Properties/AssemblyInfo.cs +++ b/Test/WindowsPhone/Properties/AssemblyInfo.cs @@ -33,7 +33,7 @@ // You can specify all the values or you can default the Revision and Build Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion("8.2.1.0")] -[assembly: AssemblyFileVersion("8.2.1.0")] +[assembly: AssemblyVersion("8.3.0.0")] +[assembly: AssemblyFileVersion("8.3.0.0")] [assembly: NeutralResourcesLanguageAttribute("en-US")] diff --git a/Test/WindowsPhone81/Properties/AssemblyInfo.cs b/Test/WindowsPhone81/Properties/AssemblyInfo.cs index 8a5fef38f..ea4a22c8a 100644 --- a/Test/WindowsPhone81/Properties/AssemblyInfo.cs +++ b/Test/WindowsPhone81/Properties/AssemblyInfo.cs @@ -34,7 +34,7 @@ // by using the '*' as shown below: -[assembly: AssemblyVersion("8.2.1.0")] -[assembly: AssemblyFileVersion("8.2.1.0")] +[assembly: AssemblyVersion("8.3.0.0")] +[assembly: AssemblyFileVersion("8.3.0.0")] [assembly: NeutralResourcesLanguageAttribute("en-US")] diff --git a/Test/WindowsPhoneRT.Test/Properties/AssemblyInfo.cs b/Test/WindowsPhoneRT.Test/Properties/AssemblyInfo.cs index 7d551a478..fcf502d98 100644 --- a/Test/WindowsPhoneRT.Test/Properties/AssemblyInfo.cs +++ b/Test/WindowsPhoneRT.Test/Properties/AssemblyInfo.cs @@ -25,7 +25,7 @@ // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("8.2.0.0")] -[assembly: AssemblyFileVersion("8.2.0.0")] +[assembly: AssemblyVersion("8.3.0.0")] +[assembly: AssemblyFileVersion("8.3.0.0")] [assembly: ComVisible(false)] \ No newline at end of file diff --git a/Test/WindowsRuntime/Microsoft.WindowsAzure.Storage.RT.Test.csproj b/Test/WindowsRuntime/Microsoft.WindowsAzure.Storage.RT.Test.csproj index f9e769e18..2a20b7eb4 100644 --- a/Test/WindowsRuntime/Microsoft.WindowsAzure.Storage.RT.Test.csproj +++ b/Test/WindowsRuntime/Microsoft.WindowsAzure.Storage.RT.Test.csproj @@ -15,7 +15,7 @@ 512 {BC8A1FFA-BEE3-4634-8014-F334798102B3};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} RT_Test_TemporaryKey.pfx - B5B21C28168D08574A37185106B2A4319FD4331C + 7439A8A53DE85A82C0D106973170847C18D74A2D True @@ -164,6 +164,7 @@ + diff --git a/Test/WindowsRuntime/Microsoft.WindowsAzure.Storage.RT.Test_TemporaryKey.pfx b/Test/WindowsRuntime/Microsoft.WindowsAzure.Storage.RT.Test_TemporaryKey.pfx new file mode 100644 index 000000000..887d3add3 Binary files /dev/null and b/Test/WindowsRuntime/Microsoft.WindowsAzure.Storage.RT.Test_TemporaryKey.pfx differ diff --git a/Test/WindowsRuntime/Properties/AssemblyInfo.cs b/Test/WindowsRuntime/Properties/AssemblyInfo.cs index debc7f8c6..cec72d2fd 100644 --- a/Test/WindowsRuntime/Properties/AssemblyInfo.cs +++ b/Test/WindowsRuntime/Properties/AssemblyInfo.cs @@ -25,7 +25,7 @@ // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("8.2.1.0")] -[assembly: AssemblyFileVersion("8.2.1.0")] +[assembly: AssemblyVersion("8.3.0.0")] +[assembly: AssemblyFileVersion("8.3.0.0")] [assembly: ComVisible(false)] diff --git a/Test/WindowsRuntime/RT_Test_TemporaryKey.pfx b/Test/WindowsRuntime/RT_Test_TemporaryKey.pfx index 7729007ff..6aef58910 100644 Binary files a/Test/WindowsRuntime/RT_Test_TemporaryKey.pfx and b/Test/WindowsRuntime/RT_Test_TemporaryKey.pfx differ diff --git a/changelog.txt b/changelog.txt index b167f3d2b..710223d55 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,12 +1,16 @@ +Changes in 8.3.0 : +- All(Netstandard): Updated the hashing algorithm to IncrementalHash instead of the original method which required buffering the data for MD5 calculations. +- All: Fixed a race condition in the resume-download logic where a failure during downloads could lead to corrupted data. + Changes in 8.2.1 : - All: Fixed a bug where empty metadata headers would lead to an infinite loop when trying to list blobs on a container. Changes in 8.2.0 : -- All: Support for 2017-04-17 REST version. Please see our REST API documentation and blogs for information about the related added features. If you are using the Storage Emulator, please update to Emulator version 5.4. +- All: Support for 2017-04-17 REST version. Please see our REST API documentation and blogs for information about the related added features. If you are using the Storage Emulator, please update to Emulator version 5.2. - Files: Added support for server side encryption. - PageBlobs: For Premium Accounts only, added support for getting and setting the tier on a page blob. The tier can also be set when creating or copying from an existing page blob. -- Tables (NetCore): Fixed a bug where the empty etag added to the table delete operation would throw exception on Xamarin/Mono. -- All: Fixed a bug where calling OpenWrite with an IfNotExists access condition on an existing block blob only fails when the blob is committed, now it fails with error 409 as soon as OpenWrite is called. +- Tables (NetCore): Fixed a bug where the empty etag added to the table delete operation would throw an exception on Xamarin/Mono. +- All: Fixed a bug where calling OpenWrite with an IfNotExists access condition on an existing block blob only fails when the blob is committed. Now it fails with error 409 as soon as OpenWrite is called. - Files (WinRT/NetCore): Calling CreateIfNotExistsAsync on a root directory no longer throws the error 405. It returns false if the share exists, or throws 404 if not. - All: Connection string support expanded to allow AccountName to be specified with SharedAccessSignature and DefaultEndpointsProtocol. In this case, SharedAccessSignature is used for credentials, while having both DefaultEndpointsProtocol and AccountName allows the library to infer a set of default endpoints. Additionally, we have added support for BlobSecondaryEndpoint, QueueSecondaryEndpoint, TableSecondaryEndpoint, and FileSecondaryEndpoint. Specifying a secondary endpoint requires the specification of the corresponding primary. - All: The use of DefaultEndpointsProtocol in a connection string is now optional in the case where endpoints would be automatically generated; if missing, a value of https will be inferred. When the parsed account settings in such a case are used to generate a connection string, the value of DefaultEndpointsProtocol will be explicitly included. @@ -20,7 +24,7 @@ Changes in 8.1.3 : - All(Desktop) : Fixed a memory leak issue where the SendStream was not being disposed during retries, cancellations and Table Operations. Changes in 8.1.1 : -- All (NetStandard/NetCore): Removed Microsoft.Data.Services.Client as a temporary fix to ODataLib dependency incompatibility with NetStandard +- All (NetStandard/NetCore): Removed Microsoft.Data.Services.Client as a temporary fix to ODataLib dependency incompatibility with NetStandard. Changes in 8.1.0 : - All: Updated OData references to the latest Netstandard friendly package version 5.8.2. @@ -30,7 +34,6 @@ Changes in 8.0.1 : - (NetStandard/Xamarin) : Fix for a break in Xamarin Apps with Streaming APIs caused by NotImplemented IncrementalHash APIs in Xamarin Runtime. Changes in 8.0.0 : - - All: Support for 2016-05-31 REST version. Please see our REST API documentation and blogs for information about the related added features. If you are using the Storage Emulator, please update to Emulator version 4.6. - All: (Desktop) Updated the desktop library to target .Net 4.5.0. - All: Added a new Netstandard 1.0 Target Framework (facade) as PCL support.