Releases: CoreWCF/CoreWCF
CoreWCF v1.5.2
Release Notes
Package Info
CoreWCF.ConfigurationManager 1.5.2
CoreWCF.Http 1.5.2
CoreWCF.Kafka 1.5.2
CoreWCF.Kafka.Client 1.5.2
CoreWCF.NetFramingBase 1.5.2
CoreWCF.NetTcp 1.5.2
CoreWCF.Primitives 1.5.2
CoreWCF.Queue 1.5.2
CoreWCF.RabbitMQ 1.5.2
CoreWCF.RabbitMQ.Client 1.5.2
CoreWCF.Templates 1.5.2
CoreWCF.UnixDomainSocket 1.5.2
CoreWCF.WebHttp 1.5.2
.NET Compatibility
This release depends on .NET Standard 2.0 and runs on any .NET version which supports .NET Standard 2.0. This release supports .NET Framework 4.6.2 and above, .NET 6, .NET 7, and .NET8. It is built on top of ASP.NET Core and has been tested and runs on all currently supported versions of ASP.NET Core up to 8.0. The CoreWCF.RabbitMQ.Client, CoreWCF.Kafka.Client, and CoreWCF.UnixDomainSocket packages only support .NET 6 or later.
What's Changed
Security Fixes
GHSA-32jq-mv89-5rx7 - CoreWCF NetFraming based services can leave connections open when they should be closed.
Feedback
Your feedback is important and appreciated. Please use the discussion #1288 for your questions and comments.
Full Changelog: v1.5.1...v1.5.2
CoreWCF v1.4.2
Release Notes
Package Info
CoreWCF.ConfigurationManager 1.4.2
CoreWCF.Http 1.4.2
CoreWCF.Kafka 1.4.2
CoreWCF.Kafka.Client 1.4.2
CoreWCF.NetFramingBase 1.4.2
CoreWCF.NetTcp 1.4.2
CoreWCF.Primitives 1.4.2
CoreWCF.Queue 1.4.2
CoreWCF.RabbitMQ 1.4.2
CoreWCF.RabbitMQ.Client 1.4.2
CoreWCF.Templates 1.4.2
CoreWCF.WebHttp 1.4.2
.NET Compatibility
This release depends on .NET Standard 2.0 and runs on any .NET version which supports .NET Standard 2.0. This release supports .NET Framework 4.6.2 and above, .NET 6, and .NET 7. It is built on top of ASP.NET Core and has been tested and runs on all currently supported versions of ASP.NET Core up to 7.0. The client packages CoreWCF.RabbitMQ.Client and CoreWCF.Kafka.Client are supported on .NET 6 or later.
What's Changed
Security Fixes
GHSA-32jq-mv89-5rx7 - CoreWCF NetFraming based services can leave connections open when they should be closed.
Feedback
Your feedback is important and appreciated. Please use the discussion #1209 for your questions and comments.
Full Changelog: v1.4.1...v1.4.2
CoreWCF v1.5.1
Release Notes
Package Info
CoreWCF.ConfigurationManager 1.5.1
CoreWCF.Http 1.5.1
CoreWCF.Kafka 1.5.1
CoreWCF.Kafka.Client 1.5.1
CoreWCF.NetFramingBase 1.5.1
CoreWCF.NetTcp 1.5.1
CoreWCF.Primitives 1.5.1
CoreWCF.Queue 1.5.1
CoreWCF.RabbitMQ 1.5.1
CoreWCF.RabbitMQ.Client 1.5.1
CoreWCF.Templates 1.5.1
CoreWCF.UnixDomainSocket 1.5.1
CoreWCF.WebHttp 1.5.1
.NET Compatibility
This release depends on .NET Standard 2.0 and runs on any .NET version which supports .NET Standard 2.0. This release supports .NET Framework 4.6.2 and above, .NET 6, .NET 7, and .NET8. It is built on top of ASP.NET Core and has been tested and runs on all currently supported versions of ASP.NET Core up to 8.0. The CoreWCF.RabbitMQ.Client, CoreWCF.Kafka.Client, and CoreWCF.UnixDomainSocket packages only support .NET 6 or later.
New Features
Unix Domain Socket support
With this release, the CoreWCF.UnixDomainSocket package has come out of preview. This package enables you to use unix domain sockets for same host communication with CoreWCF. This provides an alternative to NetNamedPipe and works on all supported platforms. This was contributed by @birojnayak from AWS. The WCF Client project is simultaneously releasing the package System.ServiceModel.UnixDomainSocket to provide the client for this transport.
New implementation of default IOperationInvoker
In previous versions, the IOperationInvoker called MethodInfo.Invoke to call the service method. This is a relatively expensive way to call a method. In this release, we have a new implementation using LINQ Expressions which compiles a strongly typed lambda function to call the service method. This will provide a small performance improvement when dispatching a service call. If you experience any compatibility issues, you can set the AppContext switch CoreWCF.Dispatcher.UseLegacyInvokeDelegate
to true to fallback to the previous implementation. If you need to do this, please open an issue explaining the problem you had. This feature was implemented by @g7ed6e
Β
What's Changed
Bug Fixes
- Fix ambiguous UseServiceModel when using WebApplication by source including CoreWCF extension method for net6.0+ by @g7ed6e in #1235
- Fix PathTooLongException in OperationParameterInjectorGenerator by @g7ed6e in #1240
- For the Kafka binding, enhance offset commit handling when using AtLeastOnce semantic by @g7ed6e #1260
- Renamed UnixDomainSocketClientCredentialType.IdentityOnly to PosixIdentity and added enum type UnixDomainSocketSecurityMode to create UDS security mode TransportCredentialOnly to correctly reflect that PosixIdentity doesn't provide any transport encryption or integrity by @birojnayak in #1262
- Updated package dependencies to latest minor version by @mconnew in #1272
- Prevent code analyzers from analyzing CoreWCF extension method source included by package by @bjornen77 in #1278
- Prevent CoreWCF extension method source being included when targeting netstandard2.0 by @mconnew in #1196
- Prevent CoreWCF extension source file being compiled when project doesn't reference asp.net core by @mconnew in #1282
Feedback
Your feedback is important and appreciated. Please use the discussion #1288 for your questions and comments.
Full Changelog: v1.5.0-preview1...v1.5.1
CoreWCF v1.5.0-preview1
Release Notes
Package Info
CoreWCF.ConfigurationManager 1.5.0-preview1
CoreWCF.Http 1.5.0-preview1
CoreWCF.Kafka 1.5.0-preview1
CoreWCF.Kafka.Client 1.5.0-preview1
CoreWCF.MSMQ 1.5.0-preview1
CoreWCF.NetFramingBase 1.5.0-preview1
CoreWCF.NetNamedPipe 1.5.0-preview1
CoreWCF.NetTcp 1.5.0-preview1
CoreWCF.Primitives 1.5.0-preview1
CoreWCF.Queue 1.5.0-preview1
CoreWCF.RabbitMQ 1.5.0-preview1
CoreWCF.RabbitMQ.Client 1.5.0-preview1
CoreWCF.Templates 1.5.0-preview1
CoreWCF.UnixDomainSocket 1.5.0-preview1
CoreWCF.WebHttp 1.5.0-preview1
.NET Compatibility
This release depends on .NET Standard 2.0 and runs on any .NET version which supports .NET Standard 2.0. This release supports .NET Framework 4.6.2 and above, .NET 6, and .NET 7. It is built on top of ASP.NET Core and has been tested and runs on all currently supported versions of ASP.NET Core up to 7.0. The CoreWCF.RabbitMQ.Client, CoreWCF.Kafka.Client, and CoreWCF.UnixDomainSocket packages only support .NET 6 or later.
New Features
Unix Domain Socket support
We've added the CoreWCF.UnixDomainSocket package to provide support for using unix domain sockets with CoreWCF. This provides an alternative to NetNamedPipe and works on all supported platforms. This was contributed by @birojnayak from AWS.
What's Changed
Bug Fixes
- Cleanup the shared memory object for named pipe which was preventing restarting a service in the same process by @mconnew in #1195
- Fix hash algorithm used to shorten long paths for net.pipe urls by @mconnew in #1196
Feedback
Your feedback is important and appreciated. Please use the discussion #1220 for your questions and comments.
Full Changelog: v1.4.1...v1.5.0-preview1
CoreWCF v1.4.1
Release Notes
Package Info
CoreWCF.Primitives 1.4.1
CoreWCF.Http 1.4.1
CoreWCF.WebHttp 1.4.1
CoreWCF.NetFramingBase 1.4.1
CoreWCF.NetTcp 1.4.1
CoreWCF.Queue 1.4.1
CoreWCF.RabbitMQ 1.4.1
CoreWCF.RabbitMQ.Client 1.4.1
CoreWCF.Kafka 1.4.1
CoreWCF.Kafka.Client 1.4.1
CoreWCF.ConfigurationManager 1.4.1
CoreWCF.Templates 1.4.1
The MSMQ and NetNamedPipe packages are still in preview and will be in the next preview release.
.NET Compatibility
This release depends on .NET Standard 2.0 and runs on any .NET version which supports .NET Standard 2.0. This release supports .NET Framework 4.6.2 and above, .NET 6, and .NET 7. It is built on top of ASP.NET Core and has been tested and runs on all currently supported versions of ASP.NET Core up to 7.0. The client packages CoreWCF.RabbitMQ.Client and CoreWCF.Kafka.Client are supported on .NET 6 or later.
What's Changed
Bug Fixes
- Some packages dependency version updates were missed when updating to latest versions by @mconnew in #1215 and #1219
Feedback
Your feedback is important and appreciated. Please use the discussion #1209 for your questions and comments.
Full Changelog: v1.4.0...v1.4.1
CoreWCF v1.4.0
Release Notes
Package Info
CoreWCF.Primitives 1.4.0
CoreWCF.Http 1.4.0
CoreWCF.WebHttp 1.4.0
CoreWCF.NetFramingBase 1.4.0
CoreWCF.NetTcp 1.4.0
CoreWCF.Queue 1.4.0
CoreWCF.RabbitMQ 1.4.0
CoreWCF.RabbitMQ.Client 1.4.0
CoreWCF.Kafka 1.4.0
CoreWCF.Kafka.Client 1.4.0
CoreWCF.ConfigurationManager 1.4.0
CoreWCF.Templates 1.4.0
The MSMQ and NetNamedPipe packages are still in preview and will be in the next preview release.
.NET Compatibility
This release depends on .NET Standard 2.0 and runs on any .NET version which supports .NET Standard 2.0. This release supports .NET Framework 4.6.2 and above, .NET 6, and .NET 7. It is built on top of ASP.NET Core and has been tested and runs on all currently supported versions of ASP.NET Core up to 7.0. The client packages CoreWCF.RabbitMQ.Client and CoreWCF.Kafka.Client are supported on .NET 6 or later.
New Features
Queue Transport support
The CoreWCF.Queue package has come out of preview and provides a base set of classes for Queue based transports. New to this release are the packages CoreWCF.Kafka and CoreWCF.Kafka.Client, contributed by @g7ed6e. This enables using CoreWCF with the Apache Kafka distributed event streaming platform. The RabbitMQ packages CoreWCF.RabbitMQ and CoreWCF.RabbitMQ.Client are now out of preview. The MSMQ package is not out of preview yet.
What's Changed
Bug Fixes
- Enable sending unsecured faults when using TransportWithMessageCredentials by @mconnew in #1083
- Reading incoming streamed message failed if chunk size and data arrive in different receive calls by @chrjstophoros in #1100
- Fixed missing argument in TimeoutException message causing different exception by @FirstClassCitizenFCC in ##1111
- Fix ServiceAuthorizationBehavior lifetime to enable override per registered Service by @g7ed6e in #1119
- Fixed Xml signature validation of requests from non-WCF clients by @gekiss in #1180
- Fixed calling OperationContext.Current before the host started broke OperationContext.Current in operations by @DxCK in #1157
- Added Kafka packages by @g7ed6e in #943
- Fixed WSDL generation when AddressingVersion.WSAddressingAugust2004 was used by @ioda in #1112
- Improved interop with Apache CFX which can't handle the "role" attribute being applied to the Security header by @mconnew in #1197
- Fixed hosted services not being correctly stopped when disposing but not stopping WebApplication by @g7ed6e and @mconnew in #1205 and #1206
New Features/APIs
- WindowsClaimSet made public by @afifi-ins in #1090
- ServiceCredentialsSecurityTokenManager made public by @afifi-ins in #1088
- Add explicit cast to Saml2SecurityToken to enable retrieving underlying Microsoft.IdentityModel.Tokens.Saml2.Saml2SecurityToken instance by @birojnayak in #1074
- Added API to enable using AuthorizationPolicy support with explicit HTTP client credential type by @g7ed6e in #1148
Other changes
Non-shipping contributions
New Contributors
- @chrjstophoros made their first contribution in #1100
- @FirstClassCitizenFCC made their first contribution in #1111
- @gekiss made their first contribution in #1180
- @DxCK made their first contribution in #1157
- @ioda made their first contribution in #1112
Feedback
Your feedback is important and appreciated. Please use the discussion #1209 for your questions and comments.
Full Changelog: v1.4.0-preview1...v1.4.0
CoreWCF v1.4.0-preview1
Release Notes
Package Info
CoreWCF.Primitives 1.4.0-preview1
CoreWCF.Http 1.4.0-preview1
CoreWCF.WebHttp 1.4.0-preview1
CoreWCF.NetFramingBase 1.4.0-preview1
CoreWCF.NetTcp 1.4.0-preview1
CoreWCF.NetNamedPipe 1.4.0-preview1
CoreWCF.Queue 1.4.0-preview1
CoreWCF.MSMQ 1.4.0-preview1
CoreWCF.RabbitMQ 1.4.0-preview1
CoreWCF.RabbitMQ.Client 1.4.0-preview1
CoreWCF.ConfigurationManager 1.4.0-preview1
CoreWCF.Templates 1.4.0-preview1
.NET Compatibility
This release depends on .NET Standard 2.0 and runs on any .NET version which supports .NET Standard 2.0. This release supports .NET Framework 4.6.2 and above, .NET 6, and .NET 7. It is built on top of ASP.NET Core and has been tested and runs on all currently supported versions of ASP.NET Core up to 7.0. The CoreWCF.RabbitMQ.Client package only supports .NET 6 or later.
New Features
Named Pipe support
We've added the CoreWCF.NetNamedPipe package to provide support for using named pipes. The code common to NetNamedPipe and NetTcp has been refactored into the CoreWCF.NetFramingBase. This makes it easier to add new transports based on top of streaming connections. Named Pipe support is only for Windows, but we'll be adding Unix Domain Socket support at a later date to provide an equivalent feature for using on Linux. This was contributed by @mconnew from Microsoft.
Queue Transport support
We've added the CoreWCF.Queue package which provides a base set of classes to make adding Queue based transports easier. We are releasing the new packages CoreWCF.MSMQ and CoreWCF.RabbitMQ (implements the AMQP protocol) to provide transports for using Windows MSMQ and RabbitMQ. We also currently have in development a queue based transport for Apache Kafka which will be released in the near future. The goal is to provide support for MSMQ as a step to migrating to other queue technologies. We're also releasing our first client package CoreWCF.RabbitMQ.Client which is only supported on .NET 6.0 or later. This is built on top of the WCF Client 6.0 pre-release package. This work was coordinated by @birojnayak from Amazon AWS, who wrote the design document for the generic Queue implementation. The majority of the code was contributed by @Ximik87 and @jonlouie. We also had code contributions from @birojnayak and @g7ed6e.
Add support for ServiceBehaviorAttribute.UseSynchronizationContext
@bjornhellander exposed ServiceBehaviorAttribute.UseSynchronizationContext
and added validating tests to confirm the property is working as expected. #983
What's Changed
Bug Fixes
When using HttpClientCredentialType.InheritedFromHost
, we now issue an auth challenge if request is not authenticated if earlier middleware didn't do so, by @g7ed6e in #967
Fixed DI injection generated code when parameter name in implementation doesn't match parameter name in contract, by @g7ed6e in #1030
Fixed channel state transitions for HTTP which was breaking returning a fault when user extensibility throws an exception, by @mconnew in #1011
Fixed MTOM headers being incorrectly added to response body with HTTP, by @mconnew in #1049
Fixed compat behavior of [WebGet|WebInvoke]Attribute.Is[Request|Response]FormatSetExplicitly
when using the attributes from System.ServiceModel.dll
when using WebHttp on .NET Framework, by @arontsang in #1035
Other changes
The version of dependent packages has changed in this release. We've had feedback that depending on the latest versions of packages causes problems for some users as it forces an upgrade. Starting from this release, we'll depend on the latest LTS versions of packages. This means we've downgraded requirements for a couple of dependencies from the 7.x version to the 6.x version. Upgrading and using the 7.x versions of packages in your own projects is still supported and intended to work.
As part of the work necessary to refactor common code between NetTcp and NetNamedPipe, CoreWCF now supports hosting NetTcp services when using an HTTP IServer other than Kestrel. This means you can use NetTcp with HttpSys or even hosted in IIS. Please note, NetTcp still doesn't support IIS hosted activation or port sharing, it still listens on its own socket and needs a unique port number.
Non-shipping contributions
None
New Contributors
- @bjornhellander made their first contribution in #983
Feedback
Your feedback is important and appreciated. Please use the discussion #1069 for your questions and comments.
Full Changelog: v1.3.2...v1.4.0-preview1
CoreWCF v1.3.2
Release Notes
Package Info
CoreWCF.Primitives 1.3.2
CoreWCF.Http 1.3.2
CoreWCF.NetTcp 1.3.2
CoreWCF.WebHttp 1.3.2
CoreWCF.ConfigurationManager 1.3.2
CoreWCF.Templates 1.3.2
.NET Compatibility
This release depends on .NET Standard 2.0 and runs on any .NET version which supports .NET Standard 2.0. This release supports .NET Framework 4.6.2 and above, .NET 6, and .NET 7. It is built on top of ASP.NET Core and has been tested and runs on all currently supported versions of ASP.NET Core up to 7.0.
What's Changed
This release contains the follow bug fixes:
- WebHttpBinding now supports ASP.NET Core authentication and policy based authorization using InheritedByHost by @g7ed6e in #951
- Fixed Windows auth with TransportWithMessageCredentials on .NET 7.0 by @nmangue in #917
- Fixed issue with source generator crashing when using
OpenApiResponse
andFromServices
together in the same contract by @g7ed6e in #970 - Fixed issue with MTOM support not handling responses larger than 2GB. Also improves memory usage for some scenarios using MTOM by @afifi-ins in #1005
- Fixed ASP.NET Core authentication authzn integration when the provided
AuthorizationHandler<T>
is added to DI with scoped lifetime by @g7ed6e in #948
Feedback
Your feedback is important and appreciated. Please use the existing v1.3.0 discussion #946 for your questions and comments.
Full Changelog: v1.3.1...v1.3.2
CoreWCF v1.3.1
Release Notes
Package Info
CoreWCF.Primitives 1.3.1
CoreWCF.Http 1.3.1
CoreWCF.NetTcp 1.3.1
CoreWCF.WebHttp 1.3.1
CoreWCF.ConfigurationManager 1.3.1
CoreWCF.Templates 1.3.1
.NET Compatibility
This release depends on .NET Standard 2.0 and runs on any .NET version which supports .NET Standard 2.0. This release supports .NET Framework 4.6.2 and above, .NET 6, and .NET 7. We have dropped support for .NET Core 3.1 as support has ended for that version. It is built on top of ASP.NET Core and has been tested and runs on all currently supported versions of ASP.NET Core up to 7.0.
What's Changed
This release is to address a bug in the newly released ASP.NET Core authorization integration. When specifying InheritedByHost as the authentication mechanism, we are failing to reject unauthenticated requests. This bug only affects the new authentication and authorization feature introduced in v1.3.0.
Feedback
Your feedback is important and appreciated. Please use the existing v1.3.0 discussion #946 for your questions and comments.
Full Changelog: v1.3.0...v1.3.1
CoreWCF v1.3.0
Release Notes
Package Info
CoreWCF.Primitives 1.3.0
CoreWCF.Http 1.3.0
CoreWCF.NetTcp 1.3.0
CoreWCF.WebHttp 1.3.0
CoreWCF.ConfigurationManager 1.3.0
CoreWCF.Templates 1.3.0
.NET Compatibility
This release depends on .NET Standard 2.0 and runs on any .NET version which supports .NET Standard 2.0. This release supports .NET Framework 4.6.2 and above, .NET 6, and .NET 7. We have dropped support for .NET Core 3.1 as support has ended for that version. It is built on top of ASP.NET Core and has been tested and runs on all currently supported versions of ASP.NET Core up to 7.0.
New Features
ASP.NET Core Authorization support
We now support attributing your service implementation with the ASP.NET Core [Authorize]
attribute. We support specifying the Policy, but not Roles or AuthenticationSchemes. This support is currently only for HTTP although we're investigating ways to enable it for other transports. This work was done by @g7ed6e.
Configuration support for WebHttpBinding
If you are using the CoreWCF.ConfigurationManager package for config file support, we now have support for configuring WebHttpBinding. Thanks to @jvnvenu for adding this support.
New options on CoreWCF Template
When using the CoreWCF template to create a new project, you will now have the option to add docker support. Thanks to @g7ed6e for adding this option.
ServiceAuthenticationManager
and ServiceAuthorizationManager
API modernization
These two classes now have async versions of the virtual methods which you can override. The existing synchronous method have been deprecated using the Obsolete
attribute and will cause a build warning. If you are overriding one of the existing synchronous virtual methods, your code will continue to function the same as it always has and will continue to do so for all future 1.x releases. The synchronous variations of the methods will likely be removed in a future 2.x release. You can safely suppress the build warning until you have migrated your implementation to the async methods. Thanks to @g7ed6e for making these async as this has long been a source of problems for developers using WCF on .NET Framework.
What's Changed
- Drop UriEx by @g7ed6e in #855
- Fix NetTcp to correctly apply MaxReceivedMessageSize by @mconnew in #856
- Make ServiceAuthorizationManager async by @g7ed6e in #852
- Fix WSDL issues due to runtime changes in net7.0 support by @g7ed6e in #837
- Async global exception logging missing user-code stacktrace by @OlofBlomqvist in #863
- Make ServiceAuthenticationManager async by @g7ed6e in #851
- Added Check That Config File Exists by @lukedukeus in #879
- Update CoreWCF.Templates target runtimes by @g7ed6e in #882
- OpenApiSchemaBuilder compatibility with System.ServiceModel.Web Attributes by @arontsang in #897
- RequestDelegateHandler.AcceptWebSocketAsync does not support SubProtocol == null by @arontsang in #909
- Fix binding to empty address by @arontsang in #908
- Make templates findable in VS when searching for 'Web' by @g7ed6e in #895
- Introduce ASP.NET Core Authorization support by @g7ed6e in #850
- Enable VS 2022 builtin docker support and wording for https in templates by @g7ed6e in #937
- Fix logger category in ServiceModelApplicationBuilderExtensions by @mus65 in #929
- WebHttpBinding config section support added by @jvnvenu in #927
- Update package versions by @mconnew in #942
- drop netcoreapp3.1 from CoreWCF.Templates by @g7ed6e in #945
Non-shipping contributions
- Update debug tests to use 15m timeout too by @mconnew in #880
- Remove net5.0 unit tests by @g7ed6e in #885
- Add hint to find test causing CI error 'There is no currently active test.' by @g7ed6e in #928
- Fix OneWayPatternTest by @g7ed6e in #938
- Design document for generic queue transport in CoreWCF by @birojnayak in #736
New Contributors
- @OlofBlomqvist made their first contribution in #863
- @lukedukeus made their first contribution in #879
- @mus65 made their first contribution in #929
- @jvnvenu made their first contribution in #927
Feedback
Your feedback is important and appreciated. Please use the discussion #946 for your questions and comments.
Full Changelog: v1.2.0...v1.3.0