{"action":"published","release":{"url":"https://api.github.com/repos/Microsoft/aspnet-api-versioning/releases/14669094","assets_url":"https://api.github.com/repos/Microsoft/aspnet-api-versioning/releases/14669094/assets","upload_url":"https://uploads.github.com/repos/Microsoft/aspnet-api-versioning/releases/14669094/assets{?name,label}","html_url":"https://github.com/Microsoft/aspnet-api-versioning/releases/tag/v3.1.0","id":14669094,"node_id":"MDc6UmVsZWFzZTE0NjY5MDk0","tag_name":"v3.1.0","target_commitish":"master","name":"3.1.0","draft":false,"author":{"login":"commonsensesoftware","id":11765008,"node_id":"MDQ6VXNlcjExNzY1MDA4","avatar_url":"https://avatars1.githubusercontent.com/u/11765008?v=4","gravatar_id":"","url":"https://api.github.com/users/commonsensesoftware","html_url":"https://github.com/commonsensesoftware","followers_url":"https://api.github.com/users/commonsensesoftware/followers","following_url":"https://api.github.com/users/commonsensesoftware/following{/other_user}","gists_url":"https://api.github.com/users/commonsensesoftware/gists{/gist_id}","starred_url":"https://api.github.com/users/commonsensesoftware/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/commonsensesoftware/subscriptions","organizations_url":"https://api.github.com/users/commonsensesoftware/orgs","repos_url":"https://api.github.com/users/commonsensesoftware/repos","events_url":"https://api.github.com/users/commonsensesoftware/events{/privacy}","received_events_url":"https://api.github.com/users/commonsensesoftware/received_events","type":"User","site_admin":false},"prerelease":false,"created_at":"2018-12-22T18:41:20Z","published_at":"2018-12-22T19:51:16Z","assets":[],"tarball_url":"https://api.github.com/repos/Microsoft/aspnet-api-versioning/tarball/v3.1.0","zipball_url":"https://api.github.com/repos/Microsoft/aspnet-api-versioning/zipball/v3.1.0","body":"This is a minor release that primarily supports the _Endpoint Routing_ feature introduced in ASP.NET Core 2.2.\r\n\r\n>This release will require you to upgrade to ASP.NET Core 2.2 if you haven't already\r\n\r\n## Features\r\nThe following are new features since 3.0.0:\r\n\r\n### ASP.NET Web API\r\n* Updated sample projects to:\r\n  * Use OWIN self-hosting (much faster and easier to maintain than IIS Express)\r\n  * Use the _SDK_ style project format\r\n  * Use the most current C# language features\r\n\r\n### ASP.NET Core\r\n* Support _Endpoint Routing_ (#413)\r\n  * All sample projects now use _Endpoint Routing_ by default\r\n  * The _legacy_ routing system via **IRouter** is still supported\r\n* Support default parameters values in the API Explorer (#414)\r\n* Added **IApiControllerSpecification** to identify _API controllers_\r\n  * The built-in **ApiBehaviorSpecification** matches controllers decorated with `[ApiController]`\r\n\r\n```c#\r\ninterface IApiControllerSpecification\r\n{\r\n    bool IsSatisfiedBy( ControllerModel controller );\r\n}\r\n```\r\n\r\n### ASP.NET Core with OData\r\n* Added **ODataControllerSpecification** to identify OData controllers as _API controllers_\r\n\r\n## Fixes\r\nThe following are fixes and patches since 3.0.0:\r\n\r\n### ASP.NET Web API with OData\r\n* Fixed exploring query options for `POST` when the controller action is not an EDM action\r\n\r\n### ASP.NET Core\r\n* Fixed possible **NullReferenceException** with _Endpoint Routing_ in **ApiVersionRouteConstraint**\r\n\r\n### ASP.NET Core with OData\r\n* Fixed exploring query options for `POST` when the controller action is not an EDM action\r\n* Fixed a scenario where **ODataAttributeRouteInfo** was not generated for some actions\r\n\r\n## Breaking Changes\r\nThe following a behavioral breaking changes.\r\n\r\n### ASP.NET Core\r\n* `ApiVersioningOptions.UseApiBehavior` is now `true` by default\r\n  * This _might_ result in excluding your API controllers if `[ApiController]` has not been applied\r\n  * If your API controllers use _convention-based_ routing, they will definitely be excluded because `[ApiController]` cannot be applied\r\n  * Resolutions:\r\n    1. Set `ApiVersioningOptions.UseApiBehavior = false`\r\n    2. Decorated your controllers with `[ApiController]`\r\n    3. Create a custom **IApiControllerSpecification** for your controllers and register it with `services.TryAddEnumerable(ServiceDescriptor.Transient<IApiControllerSpecification, MyApiControllerSpec>());`\r\n\r\n```c#\r\npublic class MyApiControllerSpec : IApiControllerSpecification\r\n{\r\n    // consider all controllers that inherit from Controller to be a UI controller\r\n    readonly Type UIControllerType = typeof( Controller ).GetTypeInfo();\r\n\r\n    public bool IsSatisfiedBy( ControllerModel controller ) =>\r\n        !UIControllerType.IsAssignableFrom( controller.ControllerType )\r\n}\r\n```\r\n>_Figure 1: Sample custom API specification_\r\n\r\n## Known Issues\r\nThe following are known issues in this release:\r\n\r\n### ASP.NET Core with OData\r\n* _Endpoint Routing_ is not supported\r\n  * OData does not intrinsically support _Endpoint Routing_ (OData/WebApi#1707)\r\n  * Disable _Endpoint Routing_ with `services.AddMvc( options => options.EnableEndpointRouting = false );`"}}
{"actor":{"display_login":"commonsensesoftware"}}