# Release History ## 1.24.0 (2022-04-04) ### Features Added - Added the `MessageContent` type which represents a message containing a content type and data. - Sub classes of `ClientOptions` are now able to create sub class implementations of `DiagnosticsOptions` and set it as the implementation for the `Diagnostics` property of `ClientOptions` via a new constructor overload. ## 1.23.0 (2022-03-21) ### Features Added - Added the `TelemetryDetails` type which enables customization of UserAgent header values on a per-request basis based on a specified `Assembly` and an optional application Id string. - Added `AddClassifier` methods to `RequestContext`. These methods allow callers to change the response classification behavior for a given method invocation. - Added a new `StatusCodeClassifier` type that will be used as the default `ResponseClassifier` for some libraries. - Added an extension method to `BinaryData` called `ToObjectFromJson` which converts the json value represented by `BinaryData` to an object of a specific type. - Additional data center locations were added to `AzureLocation`. - Added `WaitUntil` enum to allow callers to set whether a method invoking a long running operation should return when the operation starts or once it has completed. ### Breaking Changes - Cookies are no longer set on requests by default. Cookies can be re-enabled for `HttpClientTransport` by either setting an AppContext switch named "Azure.Core.Pipeline.HttpClientTransport.EnableCookies" to true or by setting the environment variable, "AZURE_CORE_HTTPCLIENT_ENABLE_COOKIES" to "true". Note: AppContext switches can also be configured via configuration like below: ```xml ``` ## 1.22.0 (2022-01-11) ### Features Added - Added `AddPolicies` method to `RequestContext`. This allows policies to be added to the pipeline when calling protocol methods. - Added `IsError` property to `Response`. This will indicate whether the message's `ResponseClassifier` considers the response to be an error. - Added `RequestFailedException` constructor that takes a `Response`. - Added `AzureLocation`. This class gives static references to known Azure regions. - Added `ResourceIdentifier`. This class allows users to load an Azure resource identifier string and parse out the pieces of that string such as which `SubscriptionId` does the resource belong to. - Added `ResourceType`. This class represents the ARM provider information for a given resource and is used by the `ResourceIdentifier` class. - Added `HttpPipelineTransportOptions` type. This type contains a `ServerCertificateCustomValidationCallback` property that allows callers to set a `Func` delegate. If set, the delegate will be called to validate the server side TLS certificate. - Added a new static overload for `HttpPipelineBuilder.Build` that takes an `HttpPipelineTransportOptions` instance. This overload creates an `HttpPipeline` with the default transport configuration and the `HttpPipelineTransportOptions` applied. It returns a `DisposableHttpPipeline` that implements `IDisposable`. Note: The `HttpPipelineTransportOptions` will not be applied if a custom `Transport` has been set in the `ClientOptions`. In the case that transport options were provided but not applied, an event is logged `(PipelineTransportOptionsNotApplied`). ### Breaking Changes - Added logging of `api-version` query parameter by default. In order to redact this, you can do the following: ```c# options.Diagnostics.LoggedQueryParameters.Remove("api-version"); ``` ### Bugs Fixed - Fixed a bug where requests were failing with `NotImplementedException` on Unity with .NET Framework scripting. ## 1.21.0 (2021-11-03) ### Features Added - Added `RequestContext` and `ErrorOptions` types to aid in configuring requests. - Added `ContentType` strongly-typed string to allow operation callers to specify the content type of a request. ## 1.20.0 (2021-10-01) ### Features Added - Added the static `DelegatedTokenCredential` type with a `Create` method, which returns an instance of `TokenCredential` that uses the supplied delgates to produce an `AccessToken`. This would most typically be used when an token has previously been obtained from some other source and that token needs to be returned by a `TokenCredential` instance. - Added `ResponseError` type to represent an Azure error type. - Added an experimental `ActivitySource` support. ### Bugs Fixed - Fixed an exception during EventSource creation on Xamarin. ## 1.19.0 (2021-09-07) ### Features Added - Added `HttpAuthorization` to represent authentication information in Authorization, ProxyAuthorization, WWW-Authenticate, and Proxy-Authenticate header values. ## 1.18.0 (2021-08-18) ### Bugs Fixed - Fixed a bug where a buffered error responses on .NET Framework were prematurely disposed - Fixed relative redirect support. ## 1.17.0 (2021-08-10) ### Features Added - Added `ClientOptions.Default` to configure defaults process-wide. - Added `HttpPipelinePosition.BeforeTransport` to be able to add policies at the end of the pipeline before the transport. ### Fixed - Fixed `NotSupportedException` when running in Unity. ## 1.16.0 (2021-06-30) ### Changed - Added `TenantId` to the properties on `TokenRequestContext` to enable multi-tenant support in Azure.Identity. ## 1.15.0 (2021-06-08) ### Features Added - Types to represent `GeoJson` primitives. ### Changed - `Response.Content` no longer throws `InvalidOperationException` when the response is backed by a `MemoryStream` with a non publicly visible buffer. ## 1.14.0 (2021-05-11) ### Features Added - Added additional methods to `BearerTokenAuthenticationPolicy`, which enables creation of authentication policies that can handle challenges. ## 1.13.0 (2021-04-07) ### Key Bug Fixes - Fixed `NotSupportedException` when running using Blazor in the browser. - Disable the response caching and enable the streaming when running using Blazor in the browser. ## 1.12.0 (2021-04-06) ### Features Added - Added `HttpPipeline.CreateHttpMessagePropertiesScope` that can be used to inject scoped properties into `HttpMessage`. ## 1.11.0 (2021-03-22) ### Features Added - `Operation` base class for operations that do not return a value. - Added `Content` property to `Response` which returns the body of the response as a `BinaryData` if the body is buffered. - `AzureNamedKeyCredential` has been implemented to cover scenarios where services require that a shared key name and the key value be used as a component of the algorithm to form the authorization token. ### Key Bug Fixes - Check the `JsonIgnoreAttribute.Condition` property added in .NET 5 when discovering members with `JsonObjectSerializer`. - `ETag` now returns `string.Empty` if it is constructed with a null value. - Keep-Alive connections are recycled every 300 seconds to observe DNS changes. ## 1.10.0 (2021-03-09) ## Features Added - Added `CloudEvent` type based on the [CloudEvent spec](https://github.com/cloudevents/spec/). ## 1.9.0 (2021-02-09) ## Features Added - Added Serialize overloads on `ObjectSerializer` that serialize to `BinaryData`. - Added AzureCoreExtensions containing extensions methods for `BinaryData` that allow deserializing with an `ObjectSerializer`. ### Key Bug Fixes - Avoid `ObjectDisposedException` when the request is cancelled during content upload over HTTPS. - Fix exception while setting `If-Modified-Since` header on .NET Framework. ## 1.8.1 (2021-01-11) ### Key Bug Fixes - Include `Microsoft.Bcl.AsyncInterfaces` dependency on .NET 5 to avoid build issues in applications targeting .NET 5. ## 1.8.0 (2021-01-06) ### Features Added - `AzureSasCredential` and its respective policy. ### Key Bug Fixes - Avoid a causing and ignoring an exception when setting network stream timeout on .NET Core ## 1.7.0 (2020-12-14) ### New Features - `System.Text.Json.JsonConverter` implementation for the `ETag` - Synchronous `HttpClient` support on .NET 5. ### Key Bug Fixes - System proxy settings are correctly applied on .NET Framework ## 1.6.0 (2020-10-28) ### Features Added - The `HttpClientTransport(HttpMessageHandler)` constructor overload. - The `JsonPatchDocument` type. ### Key Bugs Fixed - The race condition in `AzureEventSourceListener` class that sometimes resulted in a `NullReferenceException` in the `EventSource`. - The overflow exception when content length is larger than `int.MaxValue`. ## 1.5.1 (2020-10-01) ### Changed - `ServicePointManager` Connection limit is automatically increased to `50` for Azure endpoints. ## 1.5.0 (2020-09-03) ### Changed - `ETag` now supports weak ETags and implements an overload for `ToString` that accepts a format string. ### Features Added - HttpWebRequest-based transport implementation. Enabled by-default on .NET Framework. Can be disabled using `AZURE_CORE_DISABLE_HTTPWEBREQUESTTRANSPORT` environment variable or `Azure.Core.Pipeline.DisableHttpWebRequestTransport` AppContext switch. To use the app context switch add the following snippet to your `.csproj`: ```xml ``` When the environment variable or the switch are set the `HttpClientTransport` would be used by default instead. ## 1.4.1 (2020-08-18) ### Key Bugs Fixed - Bug in TaskExtensions.EnsureCompleted method that causes it to unconditionally throw an exception in the environments with synchronization context ## 1.4.0 (2020-08-06) ### Features Added - Added `ObjectSerializer` base class for serialization. - Added `IMemberNameConverter` for converting member names to serialized property names. - Added `JsonObjectSerializer` that implements `ObjectSerializer` for `System.Text.Json`. ### Key Bugs Fixed - Connection leak for retried non-buffered requests on .NET Framework. ## 1.3.0 (2020-07-02) ### Features Added - `HttpPipeline.CreateClientRequestIdScope` method to allow setting client request id on outgoing requests. ## 1.2.2 (2020-06-04) ### Key Bugs Fixed - Retry server timeouts on .NET Framework. ## 1.2.1 (2020-04-30) ### Changed - Read client request ID value used for logging and tracing off the initial request object if available. ### Key Bugs Fixed - Fixed a bug when using Azure.Core based libraries in Blazor WebAssembly apps. ## 1.2.0 (2020-04-03) ### Features Added - `AzureKeyCredential` and its respective policy. ### Changed - Response trace messages are properly identified. - Content type "application/x-www-form-urlencoded" is decoded in trace messages. ## 1.1.0 (2020-03-05) ### Fixes and improvements - Add OPTIONS and TRACE HTTP request methods. - Add `NetworkTimeout` property to `RetryOptions` and apply it to network operations like sending request or reading from the response stream. - Implement serialization for RequestFailedException. ## 1.0.2 (2020-01-10) - Block bearer token authentication for non TLS protected endpoints. - Add support for retrying on request timeouts. - Add support for retrying on 408, 500, 502, 504 status codes. - Remove commit hash from User-Agent telemetry. ## 1.0.1 - Fix issues with log redaction where first query character was replaced with '?' character. - Exclude EventCounter events from AzureEventSourceListener. - Add `AZURE_TRACING_DISABLED` environment variable support. ## 1.0.0 - Updating versioning and packaging for general availability. - Make types and namespace names consistent. ## 1.0.0-preview.9 - Added console and trace logger listener. - Added additional content and header logging options. - Moved commonly used types to Azure namespace. ## 1.0.0-preview.8 - Minor improvements and bug fixes. ## 1.0.0-preview.7 - Support for distributed tracing added. - Support for TokenCredential in ASP.NET Core integration added. Shared types for long running operations and async collections added. - .NET Core dependencies updated to preview7. - Bug fixes.