Is there an existing issue for this?
Describe the bug
Since .NET 7 and the new support for DateOnly, our custom TypeConverter for DateOnly is not invoked anymore when the controller parameter is an object initialized with [FromQuery] on a GET request
Our client sends the date with time at zero (YYYY-MM-DDT00:00:00Z), so our converter is taking the date part and ignoring the time, which worked well in .NET 6.
In .NET 7, with exactly the same code, we have a validation error The value '2023-01-31T00:00:00Z' is not valid. because the new converter is taking over, and our custom is not invoked.
I'm not sure whether this is a bug or us not using it properly, but it worked previously...
A workaround that don't imply changing the contract is welcome.
Expected Behavior
No behavior change.
The default TypeConverter is ignored, and our custom one is invoked.
Steps To Reproduce
The demo are the default .NET Web API template (weather forecast), which I added a simplified version of our custom TypeConverter, a global registration of it, and an object parameter to the forecast endpoint, which contains a DateOnly.
WebApplication1 is .NET 7 => with 2023-01-31T00:00:00Z as the date parameter => TypeConverter is not invoked, validation error
WebApplication2 is .NET 6 => with 2023-01-31T00:00:00Z => TypeConverter is invoked, works
https://github.com/killergege/net_typeconverter_demo
Exceptions (if any)
No response
.NET Version
7.0.102
Anything else?
Visual Studio 2022
.NET SDK:
Version: 7.0.102
Commit: 4bbdd14480
Runtime Environment:
OS Name: Windows
OS Version: 10.0.19044
OS Platform: Windows
RID: win10-x64
Base Path: C:\Program Files\dotnet\sdk\7.0.102\
Host:
Version: 7.0.2
Architecture: x64
Commit: d037e070eb
.NET SDKs installed:
2.2.207 [C:\Program Files\dotnet\sdk]
3.1.425 [C:\Program Files\dotnet\sdk]
6.0.404 [C:\Program Files\dotnet\sdk]
7.0.101 [C:\Program Files\dotnet\sdk]
7.0.102 [C:\Program Files\dotnet\sdk]
.NET runtimes installed:
Microsoft.AspNetCore.All 2.2.8 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.2.8 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.1.31 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.1.32 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 6.0.12 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 6.0.13 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 7.0.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 2.0.9 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.2.8 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 3.1.31 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 3.1.32 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 6.0.12 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 6.0.13 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 7.0.2 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 3.1.31 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 3.1.32 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 6.0.12 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 6.0.13 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 7.0.2 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Other architectures found:
x86 [C:\Program Files (x86)\dotnet]
registered at [HKLM\SOFTWARE\dotnet\Setup\InstalledVersions\x86\InstallLocation]
Environment variables:
Not set
global.json file:
Not found
Learn more:
https://aka.ms/dotnet/info
Download .NET:
https://aka.ms/dotnet/download
Is there an existing issue for this?
Describe the bug
Since .NET 7 and the new support for
DateOnly, our customTypeConverterforDateOnlyis not invoked anymore when the controller parameter is an object initialized with[FromQuery]on a GET requestOur client sends the date with time at zero (YYYY-MM-DDT00:00:00Z), so our converter is taking the date part and ignoring the time, which worked well in .NET 6.
In .NET 7, with exactly the same code, we have a validation error
The value '2023-01-31T00:00:00Z' is not valid.because the new converter is taking over, and our custom is not invoked.I'm not sure whether this is a bug or us not using it properly, but it worked previously...
A workaround that don't imply changing the contract is welcome.
Expected Behavior
No behavior change.
The default TypeConverter is ignored, and our custom one is invoked.
Steps To Reproduce
The demo are the default .NET Web API template (weather forecast), which I added a simplified version of our custom TypeConverter, a global registration of it, and an object parameter to the forecast endpoint, which contains a DateOnly.
WebApplication1 is .NET 7 => with
2023-01-31T00:00:00Zas the date parameter => TypeConverter is not invoked, validation errorWebApplication2 is .NET 6 => with
2023-01-31T00:00:00Z=> TypeConverter is invoked, workshttps://github.com/killergege/net_typeconverter_demo
Exceptions (if any)
No response
.NET Version
7.0.102
Anything else?
Visual Studio 2022