forked from Azure/azure-storage-net
-
Notifications
You must be signed in to change notification settings - Fork 0
/
changelog.txt
409 lines (332 loc) · 33.1 KB
/
changelog.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
Changes in 7.0.0 :
- All: Support for 2015-07-08 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.3.
- All (WinRT): All apis now return Task objects instead of IAsync* objects. Please see our blog post for more info.
- All: Ensure disposal of CancellationTokenSource in StreamExtensions.WriteToAsync<T>.
- All: Virtualized all service call APIs and unsealed their classes.
- All: Updated the UserAgent string to match the Azure Storage standard.
- All: Windows Runtime no longer uses WrappedStorageExceptions or HResults. Catch StorageException and check HTTP status code instead.
- All: Changed use of HttpClient in Windows Runtime from instance-per-request to singleton instance shared across all requests.
- All: SetServiceProperties APIs no longer instantiates Logging, HourMetrics, MinuteMetrics, or Cors instance variables. New LoggingProperties, MetricsProperties, and CorsProperties objects will need to be set for those variables before they can be assigned.
- All: LoggingProperties and MetricsProperties Version now defaults to "1.0" or Constants.AnalyticsConstants.MetricsVersionV1 or LoggingVersionV1.
- All: Removed deprecated SharedKeyLiteAuthenticationHandler, use SharedKeyAuthenticationHandler instead.
- All: Removed deprecated request options setters on the *Client class object in favor of setting request options on Client's DefaultRequestOptions object.
- All: When creating a SAS token with a non-null SharedAccessProtocol, only valid enum values are permitted. All other values will now throw an ArgumentException.
- All: Fixed a bug that caused the PCL to not work correctly when only targeting Win8.
- Blobs: Removed deprecated (Begin/End)StartCopyFromBlob(Async) APIs in favor of using (Begin/End)StartCopy(Async) APIs.
- Blobs: Removed deprecated GetSubdirectoryReference API in favor of GetDirectoryReference.
- Blobs: Removed FileMode parameter for UploadFromFile* and AppendFromFile* APIs since there is only 1 valid option (FileMode.Open).
- Blobs: When downloading blob to local file fails, file created for download will be cleaned up.
- Blobs: proposedLeaseId for minimum AcquireLease API overloads defaults to null.
- Blobs/Files: Fixed bug in DownloadToFile APIs where existing files could be deleted if users call API with Create or CreateNew FileModes.
- Tables: Removed deprecated AtomPub payloadFormat support.
- Tables: Fixed a bug in table batch operations where storage exceptions resulted in operation contexts with incorrect HttpStatusMessage.
- Tables: Batching validation was added for batch sizes exceeding 100 operations.
- Tables: Batching validation was added for null partition keys and row keys.
- Tables: Removed deprecated overloads for Table.Retrieve APIs.
- Tables: Add ProjectSystemProperties to TableRequestOptions to allow opt-out on system properties (PartitionKey, RowKey, Timestamp).
- Files: When downloading file to local system file fails, file created for download will be cleaned up.
- Queues: Removed deprecated EndBeginClear API in favor of EndClear.
Changes since 6.2.2-preview :
- All: TestConfigurations.xml has been deleted and added to the .gitignore file to keep users from accidentally leaking their credentials. To continue running tests, simply add the same file back after you get the latest code.
Changes in 6.2.2-preview :
- All: Fixed bug with CoreCLR UserAgent string.
Changes in 6.2.0 :
- All: Refreshed ASP.NET 5 targets to work with latest RC bits (DNX Core 5.0, rc1).
- All: The dnx and net target frameworks have been unified, and DNXCore target framework has been renamed to Dotnet5.4. All DNX4.5.1 projects will take a dependency on the regular Windows Desktop dll.
- All: Fixed bug that caused issue with Windows Phone 8.1 Apps.
- Tables: Added overloads to retrieve API that don't include the optional selectedColumns param to maintain backwards compatibility.
- Tables: Fixed bug where creating a table with an EncryptionPolicy set resulted in an exception.
Changes in 6.1.0 :
- All: Refreshed ASP.NET 5 targets to work with latest RC bits (DNX 4.5.1 and DNX Core 5.0, beta8).
- All: Added support for Account Shared Access Signatures to the PCL, enabling scenarios such as ListContainers, CreateTable, GetQueueServiceProperties, etc.
- Blobs: Added a performance enhancement - uploading data using client-side encryption used to always call PutBlock + PutblockList, even if the library should be calling PutBlob.
- Blobs: Fixed a bug where uploading data using client-side encryption, async or APM, and with an access condition, will in some cases upload the data unencrypted.
- Tables: Added support for projecting columns with the Retrieve operation.
- Tables: Fixed a bug where some table queries with client-side decryption were not formatted correctly, resulting in empty entity results.
- Files: Fixed bug in Windows Runtime where FetchAttributes API did not update copyState.
Changes in 6.0.0 :
- All: Support for 2015-04-05 REST version. Please see our REST API documentation and blogs for information about the related added features.
- All: Refreshed ASP.NET 5 targets to work with latest RC bits (DNX 4.5.1 and DNX Core 5.0, beta7).
- All: Removed deprecated Shared Access Signature methods that take version as a parameter.
- Tables: Altered default settings for echoContent and payloadFormat. AtomPub payloadFormat is now obsolete.
- Tables: Fixed a bug where filter conditions for doubles were improperly formatted.
- Tables: Clarified the error message for batch transactions.
- Tables: Added JSON support for Universal Apps, Windows Runtime, PCL, DNX 4.5.1, and DNX Core 5.0 targets.
- Tables: Added echo content configurability support for Universal Apps, Windows Runtime, PCL, DNX 4.5.1, and DNX Core 5.0 targets.
- Tables: Fixed a bug where a select on a non-existent field resulted in a null reference exception if the corresponding field in the TableEntity was not nullable.
- Files: Added support for Minute and Hour Metrics to FileServiceProperties and added support for File Metrics to CloudAnalyticsClient.
Changes in 5.0.2 :
- Blobs: Fixed a bug in the min AppendTextAsync overload that caused overwrite behavior instead of append behavior. Please upgrade to 5.0.2 as soon as possible to avoid this bug.
Changes in 5.0.0 :
- All: Support for 2015-02-21 REST version. Please see our REST API documentation and blogs for information about the related added features.
- All: Added GA support for Client Side Encryption. For more information about our encryption, please see our documentation and samples.
- All: Deprecated the overload for GetSharedAccessSignature that takes a SAS version because the SAS tokens generated using the current version work fine with old libraries.
- All: Updated the error message for the error that is thrown for having more than 5 shared access policy identifiers to include shares.
- All: Made SyncMemoryStream, a MemoryStream implementation that runs synchronously even when asynchronous overloads are called public.
- All: Removed dependency on Microsoft.WindowsAzure.ConfigurationManager.
- All: Updated OData dependencies to v5.6.4 and Newtonsoft.Json dependency to 6.0.8. Removed Microsoft.WindowsAzure.ConfigurationManager dependency.
- All: Changed behavior to stop stripping out query parameters passed in with the resource URI. Some query parameters such as comp, restype, snapshot and api-version will still be removed.
- Blobs: MultiBufferMemoryStream objects passed as argument to upload methods are not disposed by the client library.
- Blobs: Added CloudAppendBlob class. For more information on this, please refer to the REST API link.
- Blobs: Deprecated StartCopyFromBlob() using the Obsolete attribute. Use StartCopy() instead.
- Blobs: CreateCloudBlobClient does not throw an exception when the credentials are null to support anonymous access.
- Blobs/Files: Fixed a bug which in very rare cases could cause streaming writes to hang.
Changes in 4.4.1 Preview :
- All: Refreshed ASP.NET 5 targets to work with latest RC bits (DNX 4.5.1 and DNX Core 5.0, beta4).
- All: Renamed some constructors for blob, container, queue, table, and account in the ASP.NET 5 and Portable libraries.
- All: Changed StorageException to public in the ASP.NET 5 and Portable libraries.
- Blobs: Fixed a bug where MD5 was calculated for a PutBlockList even though UseTransactionalMD5 was set to false.
Changes in 4.4.0 Preview :
- All: Added preview support for client side encryption for blobs, queues and tables.
- All: Added preview support for building applications via Portable Class Library (Profile 111), as well as Xamarin.iOS and Xamarin.Android.
- All: Added StringToSign to the client logs in the Shared Access Signature case.
- Blobs: Added AppendBlobs. For more information on this, please refer to the REST API link.
- Blobs: Created a CloudBlob instantiable class. Users can now get/set properties, metadata, download blobs, create snapshots, copy blobs and perform leasing actions on blobs without knowing the type of the blob. CloudPageBlob, CloudBlockBlob, and CloudAppendBlob now derive from this class.
- Blobs: Added GetBlobReference on CloudBlobContainer to get a reference to a CloudBlob object that can be used for common operations across blob types. This api does not make a service call.
- Blobs (ASP.NET): Added missing overloads for StartCopyFromBlob in CloudBlockBlob and CloudPageBlob.
- Blobs (Windows Runtime): Added missing custom encoding support for UploadTextAsync() and DownloadTextAsync() API in CloudBlockBlob.
Changes in 4.3.2 Preview :
- All: Removed incorrect dependencies.
Changes in 4.3.1 Preview :
- All: Support building ASP.NET 5 based applications, in preview.
- All: All requests add x-ms-version header.
Changes in 4.3.0 :
- All: Support building Universal and Windows Runtime based Windows Phone applications.
- All: Update OData dependencies to v5.6.2 and Newtonsoft.Json dependency to v5.0.8
Changes in 4.2.1 :
- All: Fixed a bug where a TimeoutException was not properly retried.
- All: Fixed a bug where the IngressBytes of a RequestResult was not properly set in the exception case.
- All: Fixed a bug where default request options were overwritten on the resulting objects returned from a List* or GetBlobReferenceFromServer call.
Changes in 4.2.0 :
- All: Added the NameValidator class which contains helpers that check to see if resource names are valid.
- All: Fixed a bug where the RequestUrl of a LogRecord was not correctly HTML4 decoded.
- All: The maximum allowed MaximumExecutionTime is 24 days.
- All: Reworded a log line error.
- All (WP): Fixed an issue which caused WindowsPhone applications to fail Windows App Certification that is required to submit apps to the store.
- All (WP): Added Windows Phone 8.1 Silverlight support.
- Blobs: Added support for generating SAS tokens for blob snapshots.
- Blobs: Removed ability to set CloudBlobClient.DefaultDelimiter to "\\".
- Queues (RT): Fixed an issue where the messagettl and visibilitytimeout query parameters were not properly set while adding a message to the queue.
- Tables: CloudTable.DeleteIfExists and its async counterparts returns false instead of throwing an exception when the table does not exist.
Changes in 4.1.0 :
- All: Added parsing logic and the LogRecord class to further augment the Analytics Client ListLogs methods.
- All: Added Storage Analytics version constant strings.
- All: Updated the ErrorCodeStrings classes.
- All: Fixed an issue which caused Async methods to hang when an exception was thrown while translating a previous exception.
- Blobs: Fixed an issue in DownloadToFile that caused empty files to be created in the error case.
- Files: Fixed an issue in DownloadToFile that caused empty files to be created in the error case.
Changes in 4.0.1 :
- Tables: Removed Serialized attribute and ISerializable implementation from TableEntity. Implement ITableEntity for your custom entities if you need either.
Changes in 4.0.0 :
- Files: Added support for File service.
- All: RequestResult tracks Ingress and Egress Bytes for all requests.
- All: Get{BlockBlob|PageBlob|Directory|Container|Queue|Table}Reference always treat the string parameter as a relative address.
- All: ServerTimeout is set to null by default. Therefore, "timeout" query parameter will not be sent to the server if ServerTimeout is not set by the user.
- All: Renamed DoesServiceRequest to DoesServiceRequestAttribute.
- All: Added DefaultRequestOptions to the Service Clients.
- All: Deprecated all service client request options properties (RetryPolicy, LocationMode, ServerTimeout, MaximumExecutionTime, SingleBlobUploadThresholdInBytes, ParallelOperationThreadCount, and TablePayloadFormat) via the Obsolete attribute.
- All: No longer shipping the WindowsAzure.Storage.Table-Preview package or the WindowsAzure.Storage-Preview package; everything is included in the WindowsAzure.Storage RTM package.
- All: Introduced AnalyticsClient and related entity types to simplify downloading logging and metrics data.
- All: MultiBufferMemoryStream, the BufferManager-aware high performance memory stream, is public.
- All: Shared Access Signature requests use the api-version query parameter instead of the x-ms-version header.
- All: Validated that the maxResults parameter passed into any List operation (eg ListBlobs, ListQueues, etc) is either null or has a positive value.
- All (RT): The RT libraries have been merged into a single dll. The winmd is no longer created. Code has been moved from //Lib/WindowsRuntimeTable to //Lib/WindowsRuntime/Table.
- All: Deprecated SharedKeyLiteAuthenticationHandler, use SharedKeyAuthenticationHandler instead.
- All: SharedKeyAuthenticationHandler.SignRequest does not add x-ms-date header if already present.
- Blobs: Update blob length only in APIs where the server includes the x-ms-blob-content-length or Content-Length header in the response.
- Blobs: Renamed CloudBlobDirectory.GetSubdirectoryReference to CloudBlobDirectory.GetDirectoryReference.
- Blobs: Changed the deprecated ParallelOperationThreadCount, SingleBlobUploadThresholdInBytes, and LocationMode on the BlobClient to nullables.
- Blobs: Fixed an issue that allowed whitespace metadata values to be set.
- Blobs: Changed the type of exception thrown to ArgumentNullException when a null prefix is passed to the ListBlobs method.
- Queues: Changed the deprecated LocationMode on the QueueClient to a nullable.
- Queues: Changed the visibility of QueueRequest.WriteMessageContent method to public.
- Queues: Removed the CloudQueueClient(Uri) constructor because queues don't support anonymous access. The correct usage is to use the CloudQueueClient(Uri, StorageCredentials) constructor instead.
- Tables: Changed the deprecated PayloadFormat and LocationMode on the TableClient to nullables.
- Tables: Deprecated the DataServices namespace via the Obsolete attribute.
- Tables: TableEntity is serializable via the ISerializable interface.
- Tables: Made the DateTime public in the EntityProperty class.
- Tables: Removed the CloudTableClient(Uri) constructor because tables don't support anonymous access. The correct usage is to use the CloudTableClient(Uri, StorageCredentials) constructor instead.
- Tables: CloudTable(Uri) correctly parses partition key and row key limit values from passed in URLs with SAS tokens.
- Tables (RT): Windows RT class "TableBatchOperationExtensions" no longer exists; functionality has been moved to methods in the TableBatchOperation class.
- Tables (RT): Windows RT class "CloudTableExtensions" no longer exists; functionality has been moved to methods in the CloudTable class.
- Tables (RT): Windows RT class "TableQueryExtensions" no longer exists; functionality has been moved to methods in the TableQuery class.
- Tables (RT): Windows RT class "TableOperationFactory" no longer exists; functionality has been moved to methods in the TableOperation class.
Issues fixed in 3.2.1 :
- All: Fixed a race condition that was causing deadlock during Task cancellation.
- Queues: CloudQueue objects returned by listing queues include metadata when QueueListingDetails.Metadata is used.
Issues fixed in 3.2.0 :
- All: Added support for secondary location access in Azure Storage Emulator
- All: Fixed a race condition that was causing NullReferenceException during asynchronous upload/download.
Issues fixed in 3.1.0.1 :
- All: Fixed an issue that was causing the Cloud{BlobContainer|Queue|Table|BlockBlob|PageBlob} names to be set incorrectly when the absolute Uri was passed to the Get{Container|Queue|Table|BlockBlob|PageBlob}Reference methods. This also ensures that the SharedAccessSignature which includes the canonicalized names of these resources is calculated correctly.
- All: Removed the System.Data.Services.Client dependency from the Nuget package.
- Queues: Added an overload to GetSharedAccessSignature that takes only the SharedAccessQueuePolicy in CloudQueue.
- Tables: Added an overload to GetSharedAccessSignature that takes only the SharedAccessTablePolicy and an overload that takes the SharedAccessTablePolicy and an accessPolicyIndentifier string in CloudTable.
Issues fixed in 3.1.0 :
- All: Added the ability to choose which SAS Version to use when generating Shared Access Signatures (either the 2012-02-12 or 2013-08-15 versions).
Issues fixed in 3.0.3 :
- All: Fixed an issue that was causing a deadlock because the cancellation registration was being de-registered while holding on to a lock that the cancellation callback was waiting on.
- All: Fixed an issue where parsing exception information out of the response stream while using async was blocking on IO calls.
- All (WP): Fixed an issue with cancellation and timeout during upload and download causing a thread to hang. HttpWebRequest.Abort is not called during stream operations anymore.
- Blobs: Streams opened with OpenRead methods use the user-provided buffer pooling implementation.
- Blobs: If the parent of a blob is the container, Cloud{BlockBlob|PageBlob|BlobDirectory}.Parent returns a valid CloudBlobDirectory with an empty prefix. Similarly, container.GetDirectoryReference("") gets a valid CloudBlobDirectory representing the container.
- Tables (Perf): Fixed an issue where the entity properties were being enumerated twice during table write operations while using JSON.
- Tables (Perf): Parse the URI for the account name only once in the client constructor and store it so that all table operations can use the stored value.
Issues fixed in 3.0.2 :
- All (WP): Fixed an issue causing ArgumentOutOfRangeException in many APIs.
- Queues: Fixed an issue causing NullReferenceException when trying to re-create an existing queue.
- Tables: Fixed an issue with TableServiceContext causing NullReferenceException when the error response cannot be parsed.
- Tables (RT): Do not allow users to set JsonFullMetadata format on RequestOptions in RT, because JSON is not supported on the RT library yet.
Issues fixed in 3.0.1 :
- All (WP): Set the Accept type to application/xml explicitly for Get/SetACL.
- Blobs: LastModified and ETag properties are populated after Lease operations.
- Tables: Added an explicit reference to Microsoft.Data.Services.Client in the Nuget package.
- Tables: Fixed an issue caused by a Json .NET bug that resulted in an error being thrown while parsing a table query response. More details on the bug can be found here: http://james.newtonking.com/archive/2013/11/29/fixing-jarray-getenumerator-method-not-found-bug
- Tables (RT): Fixed continuation tokens for queries and listing operations.
Changes in 3.0.0 :
- All: Support for 2013-08-15 REST version - see here for additional details: http://blogs.msdn.com/b/windowsazurestorage/archive/2013/11/27/windows-azure-storage-release-introducing-cors-json-minute-metrics-and-more.aspx.
- All: Suppress warning for FiddlerCore EntensionAttribute conflict.
- Blobs: Added support for XML serialize/deserialize of BlobContinuationToken.
- Blobs: Added ParallelOperationThreadCount and SingleBlobUploadThresholdInBytes to BlobRequestOptions.
- Tables: Fixed GetHashCode() in EntityProperty to return equal values for binary types.
- Tables: JsonMinimalMetadata is now the default payload format (rather than AtomPub). Payload format can be specified for all table requests by using CloudTableClient.TablePayloadFormat or for an individual table request by using TableRequestOptions.TablePayloadFormat.
- Tables (RT): Fixed error parsing for tables.
Issues fixed in 2.1.0.4 :
- Tables: Do not send the cast operator in the table query filter string.
Issues fixed in 2.1.0.3 :
- All: Registered wait handles are unregistered sooner for more efficient GC.
Issues fixed in 2.1.0.2 :
- Blobs: Streams opened by OpenRead do not throw NotSupportedException when Flush is called.
- Tables: Generic ExecuteQuery methods on CloudTable execute IQueryable queries correctly by generating the filter string.
Changes in 2.1.0 :
- All: Changed User-Agent header value to include .NET CLR and OS versions
- All: Performance improvements across all services (major improvements detailed below).
- All: Added logging functionality for all operations.
- All: Added Task overloads for all asynchronous APIs.
- All: Listing methods provide a third overload for that accepts just prefix.
- All: Exposed header, query and generic constants as public to assist clients developing via the protocol layer.
- All: Buffers that would end up in Large Object Heap are avoided as much as possible.
- All: OperationContext.ClientRequestID is automatically set for each operation with a new GUID if the user does not provide one.
- All: StorageCredentials exposes a new UpdateSASToken method to allow users to update their SAS Token in place.
- All: StorageCredentials exposes a new UpdateKey overload that only requires key value.
- All: StorageCredentials exposes a new ExportBase64EncodedKey method that returns the key in Base64 encoding.
- All: .NET MD5 implementation is used by default, FISMA (Native) MD5 can be enabled by setting CloudStorageAccount.UseV1MD5 to false explicitly.
- All: Mark the assembly to allow partially trusted callers.
- All: Added EndpointSuffix to CloudStorageAccount.
- All: Delays between request are pre-empted when user cancels the operation.
- All: Fix to measure End-to-end timeouts more accurately.
- All: Types that contain disposable objects implement IDisposable.
- All: Synchronous APIs correctly timeout if network IO is pending.
- All: When a request times out, the StorageException object that was thrown will contain a TimeoutException as InnerException.
- All: Synchronous requests do not retry errors anymore that occur before sending the request.
- All: Wait handles used for asynchronous requests are unregistered properly for better GC.
- All: CloudStorageAccount.ToString can recreate the original connection string that was passed in to CloudStorageAccount.Parse.
- All: Expose IBufferManager on ServiceClients enabling users to provide a buffer pooling implementation.
- All: Abort a pending request if upload times out to prevent socket exhaustion
- All: Fixed a potential overflow in ExponentialRetry.
- All: Queue and Table SAS validation should not check for signed resource(sr). Tables should check the table name(tn).
- Blobs: ICloudBlob exposes new BeginOpenRead/EndOpenRead methods to asynchronously open a stream to read from the blob.
- Blobs: Cloud[Block|Page]Blob.OpenRead performs a service request.
- Blobs: Streams opened with OpenRead methods do not discard the cache anymore if seeked to a position within the cached range.
- Blobs: Streams opened with OpenRead methods provide true synchronous Read API.
- Blobs: Streams opened with OpenRead methods do not allow calling multiple BeginRead methods because the result is undefined.
- Blobs: ICloudBlob.StreamMinimumReadSizeInBytes can be set to any value larger than or equal to 16KB.
- Blobs: OpenWrite methods return CloudBlobStream instead of Stream. The CloudBlobStream type provides explicit commit and asynchronous flush functionality.
- Blobs: Parallel upload performance of streams opened with OpenWrite methods is improved considerably due to keeping number of active operations at a certain level.
- Blobs: ICloudBlob exposes new UploadFromStream overloads that accept a length parameter, allowing users to upload a portion of the stream.
- Blobs: CloudBlockBlob.UploadFromStream correctly updates the locally cached MD5.
- Blobs: CloudBlockBlob exposes new UploadFromFile, UploadFromByteArray, and UploadText methods.
- Blobs: CloudPageBlob exposes new UploadFromFile and UploadFromByteArray methods.
- Blobs: CloudBlockBlob exposes new DownloadToFile, DownloadToByteArray, DownloadRangeToByteArray, and DownloadText methods.
- Blobs: CloudPageBlob exposes new DownloadToFile, DownloadToByteArray, and DownloadRangeToByteArray methods.
- Blobs: Added support for page blob sequence numbers.
- Blobs: Added support for public access to container creation.
- Blobs: Cloud[Block|Page]Blob.Exists also updates properties.
- Blobs: Cloud[Block|Page]Blob.StartCopyFromBlob verifies the source URI to prevent a possible NullReferenceException.
- Blobs: ICloudBlob exposes new IsSnapshot and SnapshotQualifiedUri properties for easier handling of blob snapshots.
- Blobs: Blob downloads skip length validation if Content-Length header is not set.
- Blobs: BlobProperties constructor that takes another BlobProperties object correctly copies all properties.
- Blobs: Traversing to the parent container from a CloudBlobDirectory does not create a new CloudBlobContainer object.
- Blobs (RT): IRandomAccessStreamWithContentType returned by ICloudBlob.OpenReadAsync correctly implements CloneStream and Seek.
- Blobs (RT): OpenWriteAsync methods return ICloudBlobStream instead of IOutputStream. ICloudBlobStream type provides explicit commit functionality.
- Blobs (RT): ICloudBlobStream.FlushAsync no longer blocks.
- Queues: MaxResults argument in queue listing APIs is nullable.
- Queues: CloudQueue.EndBeginClear is deprecated.
- Queues: All queue APIs are correctly marked with DoesServiceRequest attribute.
- Queues: New CloudQueue.BeginDeleteMessage overloads with less arguments.
- Queues (RT): visibilityTimeout argument of CloudQueue.UpdateMessage is not nullable.
- Queues (RT): CloudQueueClient.ListQueuesSegmentedAsync takes a new argument of type QueueRequestOptions.
- Tables: Table Service Layer supports queries with LINQ.
- Tables: TableEntity derived classes now support compiled serializers to improve serialization performance.
- Tables: Table allows query execution with a resolver against non-generic query types (dynamic entity types).
- Tables: Added IgnorePropertyAttribute for TableEntities to allow individual properties on POCO objects to be ignored during serialization.
- Tables: If-Match condition for Delete/Replace/Merge operations will not be set if entity ETag is null.
- Tables: Executing a batch operation with no operations will throw an InvalidOperationException instead of an ArgumentOutOfRangeException.
- Tables: To support IQueryable projections the TableQuery class Generic type is no longer constrained with where T: ITableEntity, new(). For TableQueries not created with via the IQueryable these same effective constraints are validated at runtime.
- Tables: Performance improvement to reduce Activator.CreateInstance usage for entity instantiation.
- Tables: Exposed PropertyAsObject Property in EntityProperty as publicly readable.
- Tables: Exposed table serialialization logic. Allow users to persist and read back entities that don't derive from TableEntity using static methods(ReadUserObject and WriteUserObject).
- Tables: Exposed CreateEntityPropertyFromObject in EntityProperty so users can pass in a value and get the corresponding EntityProperty.
- Tables: Escape single quote in PartitionKey and RowKey correctly while generating URIs.
Issues fixed in 2.0.6.1 :
- Tables: Fix for Table Service layer to drain response stream
Issues fixed in 2.0.6 :
- All: Default RetryPolicy filters updated to not retry 100-407, 409-499, 501, and 505
- All: Support for all flavors of SharedKey and SharedKeyLite message signing through AuthenticationScheme property on client classes.
- All: Unusable HttpWebRequestFactory and WebRequestExtensions are not public anymore
- All: TranslateFromExceptionMessage has been deprecated in Microsoft.WindowsAzure.Storage.dll and is now available only in Microsoft.WindowsAzure.Storage.WinMD
- All: StorageCredentials supports empty account keys.
- All: RequestResult deserialization does not fail when Content-MD5 is missing
- Blobs (RT): DownloadToStreamAsync and DownloadRangeToStreamAsync writes the entire data to the given stream before returning back to the caller.
- Blobs (RT): UploadFromStreamAsync commits the blob in a worker thread to unblock UI.
- Blobs: Blob stream now uses a GUID instead of a random number as block ID prefix to prevent collisions.
- Queues: Changed return type of CloudQueue.BeginSetMetadata(AsyncCallback, object) to ICancellableAsyncResult.
- Tables: Changed default message signing to SharedKey (except for Data Services).
- Tables: EntityProperty updated to set the IsNull value for properties correctly in the case when the user sets an EntityProperty value through its setter.
- Tables: EdmType for null values in EntityProperty is set correctly and does not default to string any more.
Issues fixed in 2.0.5.1 :
- All: Make sure the response stream is drained to prevent socket exhaustion.
Issues fixed in 2.0.5 :
- All: StorageException is serializable. Also, other useful objects for debugging (StorageExtendedErrorInformation and RequestResult) are also serializable.
- All: SharedAccessSignature helper uses culture invariant characteristics to calculate SAS.
- All: CloudStorageAccount can parse connection strings with extra blank values.
- All: OperationContext StartTime and EndTime are populated during execution.
- All: StorageCredentials.UpdateKey does not work on SAS/Anonymous credentials anymore.
- All: Metadata headers are sorted using en-US culture to prevent 403 errors in some cultures.
- All: Fixed issue where in some cases a sync method call could result in a 0 ms timeout being set on HttpWebRequest.
- Blobs: Snapshot time embedded in blob Uri is parsed in the constructor.
- Blobs: GetBlobReferenceFromServer works with blob Uri that contain a SAS token.
- Blobs: BlobWriteStream honors AccessCondition.
- Blobs: BlobWriteStream prevents using StoreBlobContentMD5 on existing page blobs.
- Blobs: ICloudBlob has OpenRead method.
- Blobs: Cloud*Blob.OpenRead can be used with snapshots.
- Blobs: AbortCopy does not throw an exception anymore when a copy is successfully aborted.
- Queues: Ability to recreate CloudQueueMessage with Message Id and Pop Receipt.
- Tables: Exceptions during TableBatchOperation parse the entity index from the server response.
- Tables: Floating-point number filter is generated using invariant culture.
Issues fixed in 2.0.4.1 :
- All: Updated Odata dependency to latest and also changed nuspec to allow any version >= 5.2.0.
Issues fixed in 2.0.4 :
- All: Flush HttpWebRequest's request stream before calling BeginGetResponse.
- All: Support Null Retry Policies.
- Blobs: Continue ListContainers parsing if a container property is unknown.
- Queues (RT): DeleteMessageAsync(string messageId, string popReceipt) ignores the messageId and popReceipt.
- Tables: Add a TableConstant to define minimum DateTime supported.
- Tables: Correct count behavior with synchronous non segmented execution.
- Tables: Allow String.Empty in TableQuery Filters.
Issues fixed in 2.0.3 :
- All (RT): General metadata correctness test fails when using the RT library to develop windows store apps.
- Queues: CloudQueueMessage.MaxNumberOfMessagesToPeek, CloudQueueMessage.MaxMessageSize and CloudQueueMessage.MaximumTimeToLive have disappeared from CloudQueueMessage.
- Queues: CloudQueue.BeginCreateIfNotExists and CloudQueue.BeginDeleteIfExists methods expect valid options argument.
- Tables: When one or more of the batches fails, but then succeeds on a retry, the "extra" TableResults of the failed transactions are also returned.
- Tables: TableQuery.GenerateFilterConditionForLong does not append 'L' at the end of the value and thus values larger than Int32.MaxValue cannot be used when filtering.
- Tables: TableEntity does not support serializing nullable values.
- Tables: CloudTable.EndListTablesSegmented method does not work correctly.
Issues fixed in 2.0.2 :
- All: CompletedSynchronously property returns inconsistent values on IAsyncResult objects returned by asynchronous methods and thus TaskFactory.FromAsync does not work properly.
- Tables: Public DynamicTableEntity constructors use DateTime even though the Timestamp property is of type DateTimeOffset.
- Tables: BeginSaveChangesWithRetries overload ignores the options argument.
Issues fixed in 2.0.1 :
- All: CloudStorageAccount.*Parse methods throw an exception for "UseDevelopmentStorage=true" string.
- All: StorageErrorCodeStrings class is missing.
- Blobs: ICloudBlob interface does not have GetSharedAccessSignature method.