From 3743dcc2835226efb69e9e683f5311ccca2cd855 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
<42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Fri, 20 Aug 2021 08:41:51 -0700
Subject: [PATCH 1/9] [release/6.0-rc1] Update dependencies from dotnet/runtime
dotnet/efcore (#35513)
---
eng/Version.Details.xml | 280 ++++++++++++++++++++--------------------
eng/Versions.props | 140 ++++++++++----------
2 files changed, 210 insertions(+), 210 deletions(-)
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 648020904040..69dcc8b46531 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -9,292 +9,292 @@
-->
-
+
https://github.com/dotnet/efcore
- 29f9e96dad286a762c2e120483dea9734fc0c320
+ 2de54a8bb5f757cd72cd8a2c8a914d95d857ee2f
-
+
https://github.com/dotnet/efcore
- 29f9e96dad286a762c2e120483dea9734fc0c320
+ 2de54a8bb5f757cd72cd8a2c8a914d95d857ee2f
-
+
https://github.com/dotnet/efcore
- 29f9e96dad286a762c2e120483dea9734fc0c320
+ 2de54a8bb5f757cd72cd8a2c8a914d95d857ee2f
-
+
https://github.com/dotnet/efcore
- 29f9e96dad286a762c2e120483dea9734fc0c320
+ 2de54a8bb5f757cd72cd8a2c8a914d95d857ee2f
-
+
https://github.com/dotnet/efcore
- 29f9e96dad286a762c2e120483dea9734fc0c320
+ 2de54a8bb5f757cd72cd8a2c8a914d95d857ee2f
-
+
https://github.com/dotnet/efcore
- 29f9e96dad286a762c2e120483dea9734fc0c320
+ 2de54a8bb5f757cd72cd8a2c8a914d95d857ee2f
-
+
https://github.com/dotnet/efcore
- 29f9e96dad286a762c2e120483dea9734fc0c320
+ 2de54a8bb5f757cd72cd8a2c8a914d95d857ee2f
-
+
https://github.com/dotnet/efcore
- 29f9e96dad286a762c2e120483dea9734fc0c320
+ 2de54a8bb5f757cd72cd8a2c8a914d95d857ee2f
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
-
+
https://github.com/dotnet/runtime
- f2b270cdae0ad927a200cf41e214e21326ff29a7
+ 27d062a8f09c7246bc0597d9f74d638a17bf3438
https://github.com/dotnet/arcade
diff --git a/eng/Versions.props b/eng/Versions.props
index 6860e7fb52d0..5a64dabed783 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -65,78 +65,78 @@
-->
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
- 6.0.0-rc.1.21418.17
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21418.17
+ 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21418.16
- 6.0.0-rc.1.21418.16
- 6.0.0-rc.1.21418.16
- 6.0.0-rc.1.21418.16
- 6.0.0-rc.1.21418.16
- 6.0.0-rc.1.21418.16
- 6.0.0-rc.1.21418.16
- 6.0.0-rc.1.21418.16
+ 6.0.0-rc.1.21420.8
+ 6.0.0-rc.1.21420.8
+ 6.0.0-rc.1.21420.8
+ 6.0.0-rc.1.21420.8
+ 6.0.0-rc.1.21420.8
+ 6.0.0-rc.1.21420.8
+ 6.0.0-rc.1.21420.8
+ 6.0.0-rc.1.21420.8
6.0.0-beta.21418.12
6.0.0-beta.21418.12
From dd2b7da520d41c7a392d3c2c51a510ddfde5e8a5 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Fri, 20 Aug 2021 09:26:47 -0700
Subject: [PATCH 2/9] Set HttpSys read error log levels to debug #35490
(#35542)
Co-authored-by: Chris R
---
.../HttpSys/src/RequestProcessing/RequestStream.Log.cs | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/Servers/HttpSys/src/RequestProcessing/RequestStream.Log.cs b/src/Servers/HttpSys/src/RequestProcessing/RequestStream.Log.cs
index 2f223507e156..1421a7ec23e1 100644
--- a/src/Servers/HttpSys/src/RequestProcessing/RequestStream.Log.cs
+++ b/src/Servers/HttpSys/src/RequestProcessing/RequestStream.Log.cs
@@ -11,13 +11,13 @@ internal partial class RequestStream
private static class Log
{
private static readonly Action _errorWhenReadAsync =
- LoggerMessage.Define(LogLevel.Error, LoggerEventIds.ErrorWhenReadAsync, "ReadAsync");
+ LoggerMessage.Define(LogLevel.Debug, LoggerEventIds.ErrorWhenReadAsync, "ReadAsync");
private static readonly Action _errorWhenReadBegun =
- LoggerMessage.Define(LogLevel.Error, LoggerEventIds.ErrorWhenReadBegun, "BeginRead");
+ LoggerMessage.Define(LogLevel.Debug, LoggerEventIds.ErrorWhenReadBegun, "BeginRead");
private static readonly Action _errorWhileRead =
- LoggerMessage.Define(LogLevel.Error, LoggerEventIds.ErrorWhileRead, "Read");
+ LoggerMessage.Define(LogLevel.Debug, LoggerEventIds.ErrorWhileRead, "Read");
public static void ErrorWhenReadAsync(ILogger logger, Exception exception)
{
From 781f4fb6ee9f6cba52ee1e2995db3f90f5b5bfd6 Mon Sep 17 00:00:00 2001
From: Safia Abdalla
Date: Fri, 20 Aug 2021 11:56:58 -0700
Subject: [PATCH 3/9] [release/6.0-rc1] Treat reference type parameters in
oblivious nullability context as optional (#35526)
* Treat parameters in oblivious nullability context as optional
* Only apply fix for reference types
* Update optionality check in API descriptor
* Update check in BindAsync and Mvc.ApiExplorer test
---
.../src/RequestDelegateFactory.cs | 27 ++++++++++++-----
.../test/RequestDelegateFactoryTests.cs | 29 +++++++++++++++++++
.../EndpointMetadataApiDescriptionProvider.cs | 2 +-
...pointMetadataApiDescriptionProviderTest.cs | 23 ++++++++++++++-
4 files changed, 71 insertions(+), 10 deletions(-)
diff --git a/src/Http/Http.Extensions/src/RequestDelegateFactory.cs b/src/Http/Http.Extensions/src/RequestDelegateFactory.cs
index 94d04695dc99..a735b9abee20 100644
--- a/src/Http/Http.Extensions/src/RequestDelegateFactory.cs
+++ b/src/Http/Http.Extensions/src/RequestDelegateFactory.cs
@@ -627,8 +627,7 @@ private static Expression GetValueFromProperty(Expression sourceExpression, stri
private static Expression BindParameterFromService(ParameterInfo parameter)
{
- var nullability = NullabilityContext.Create(parameter);
- var isOptional = parameter.HasDefaultValue || nullability.ReadState == NullabilityState.Nullable;
+ var isOptional = IsOptionalParameter(parameter);
return isOptional
? Expression.Call(GetServiceMethod.MakeGenericMethod(parameter.ParameterType), RequestServicesExpr)
@@ -637,8 +636,7 @@ private static Expression BindParameterFromService(ParameterInfo parameter)
private static Expression BindParameterFromValue(ParameterInfo parameter, Expression valueExpression, FactoryContext factoryContext)
{
- var nullability = NullabilityContext.Create(parameter);
- var isOptional = parameter.HasDefaultValue || nullability.ReadState == NullabilityState.Nullable;
+ var isOptional = IsOptionalParameter(parameter);
var argument = Expression.Variable(parameter.ParameterType, $"{parameter.Name}_local");
@@ -671,7 +669,8 @@ private static Expression BindParameterFromValue(ParameterInfo parameter, Expres
}
// Allow nullable parameters that don't have a default value
- if (nullability.ReadState == NullabilityState.Nullable && !parameter.HasDefaultValue)
+ var nullability = NullabilityContext.Create(parameter);
+ if (nullability.ReadState != NullabilityState.NotNull && !parameter.HasDefaultValue)
{
return valueExpression;
}
@@ -817,7 +816,7 @@ private static Expression BindParameterFromBindAsync(ParameterInfo parameter, Fa
{
// We reference the boundValues array by parameter index here
var nullability = NullabilityContext.Create(parameter);
- var isOptional = parameter.HasDefaultValue || nullability.ReadState == NullabilityState.Nullable;
+ var isOptional = IsOptionalParameter(parameter);
// Get the BindAsync method
var body = TryParseMethodCache.FindBindAsyncMethod(parameter.ParameterType)!;
@@ -862,8 +861,7 @@ private static Expression BindParameterFromBody(ParameterInfo parameter, bool al
}
}
- var nullability = NullabilityContext.Create(parameter);
- var isOptional = parameter.HasDefaultValue || nullability.ReadState == NullabilityState.Nullable;
+ var isOptional = IsOptionalParameter(parameter);
factoryContext.JsonRequestBodyType = parameter.ParameterType;
factoryContext.AllowEmptyRequestBody = allowEmpty || isOptional;
@@ -903,6 +901,19 @@ private static Expression BindParameterFromBody(ParameterInfo parameter, bool al
return Expression.Convert(BodyValueExpr, parameter.ParameterType);
}
+ private static bool IsOptionalParameter(ParameterInfo parameter)
+ {
+ // - Parameters representing value or reference types with a default value
+ // under any nullability context are treated as optional.
+ // - Value type parameters without a default value in an oblivious
+ // nullability context are required.
+ // - Reference type parameters without a default value in an oblivious
+ // nullability context are optional.
+ var nullability = NullabilityContext.Create(parameter);
+ return parameter.HasDefaultValue
+ || nullability.ReadState != NullabilityState.NotNull;
+ }
+
private static MethodInfo GetMethodInfo(Expression expr)
{
var mc = (MethodCallExpression)expr.Body;
diff --git a/src/Http/Http.Extensions/test/RequestDelegateFactoryTests.cs b/src/Http/Http.Extensions/test/RequestDelegateFactoryTests.cs
index 25b5ffe6750e..a6236e37c802 100644
--- a/src/Http/Http.Extensions/test/RequestDelegateFactoryTests.cs
+++ b/src/Http/Http.Extensions/test/RequestDelegateFactoryTests.cs
@@ -2137,6 +2137,35 @@ public async Task CanSetParseableStringParamAsOptionalWithNullabilityDisability(
Assert.Equal(expectedResponse, decodedResponseBody);
}
+ [Theory]
+ [InlineData(true, "Age: 42")]
+ [InlineData(false, "Age: ")]
+ public async Task TreatsUnknownNullabilityAsOptionalForReferenceType(bool provideValue, string expectedResponse)
+ {
+ string optionalQueryParam(string age) => $"Age: {age}";
+
+ var httpContext = new DefaultHttpContext();
+ var responseBodyStream = new MemoryStream();
+ httpContext.Response.Body = responseBodyStream;
+
+ if (provideValue)
+ {
+ httpContext.Request.Query = new QueryCollection(new Dictionary
+ {
+ ["age"] = "42"
+ });
+ }
+
+ var requestDelegate = RequestDelegateFactory.Create(optionalQueryParam);
+
+ await requestDelegate(httpContext);
+
+ Assert.Equal(200, httpContext.Response.StatusCode);
+ Assert.False(httpContext.RequestAborted.IsCancellationRequested);
+ var decodedResponseBody = Encoding.UTF8.GetString(responseBodyStream.ToArray());
+ Assert.Equal(expectedResponse, decodedResponseBody);
+ }
+
#nullable enable
private class Todo : ITodo
diff --git a/src/Mvc/Mvc.ApiExplorer/src/EndpointMetadataApiDescriptionProvider.cs b/src/Mvc/Mvc.ApiExplorer/src/EndpointMetadataApiDescriptionProvider.cs
index 815d1b269259..f64d5b0a3b05 100644
--- a/src/Mvc/Mvc.ApiExplorer/src/EndpointMetadataApiDescriptionProvider.cs
+++ b/src/Mvc/Mvc.ApiExplorer/src/EndpointMetadataApiDescriptionProvider.cs
@@ -143,7 +143,7 @@ private ApiDescription CreateApiDescription(RouteEndpoint routeEndpoint, string
// Determine the "requiredness" based on nullability, default value or if allowEmpty is set
var nullability = NullabilityContext.Create(parameter);
- var isOptional = parameter.HasDefaultValue || nullability.ReadState == NullabilityState.Nullable || allowEmpty;
+ var isOptional = parameter.HasDefaultValue || nullability.ReadState != NullabilityState.NotNull || allowEmpty;
return new ApiParameterDescription
{
diff --git a/src/Mvc/Mvc.ApiExplorer/test/EndpointMetadataApiDescriptionProviderTest.cs b/src/Mvc/Mvc.ApiExplorer/test/EndpointMetadataApiDescriptionProviderTest.cs
index 063199b39513..707a80f8c8e8 100644
--- a/src/Mvc/Mvc.ApiExplorer/test/EndpointMetadataApiDescriptionProviderTest.cs
+++ b/src/Mvc/Mvc.ApiExplorer/test/EndpointMetadataApiDescriptionProviderTest.cs
@@ -340,7 +340,7 @@ public void AddsMultipleParameters()
Assert.Equal(typeof(InferredJsonClass), fromBodyParam.Type);
Assert.Equal(typeof(InferredJsonClass), fromBodyParam.ModelMetadata.ModelType);
Assert.Equal(BindingSource.Body, fromBodyParam.Source);
- Assert.True(fromBodyParam.IsRequired);
+ Assert.False(fromBodyParam.IsRequired); // Reference type in oblivious nullability context
}
[Fact]
@@ -413,6 +413,27 @@ public void AddsMetadataFromRouteEndpoint()
Assert.True(apiExplorerSettings.IgnoreApi);
}
+ [Fact]
+ public void TestParameterIsRequiredForObliviousNullabilityContext()
+ {
+ // In an oblivious nullability context, reference type parameters without
+ // annotations are optional. Value type parameters are always required.
+ var apiDescription = GetApiDescription((string foo, int bar) => { });
+ Assert.Equal(2, apiDescription.ParameterDescriptions.Count);
+
+ var fooParam = apiDescription.ParameterDescriptions[0];
+ Assert.Equal(typeof(string), fooParam.Type);
+ Assert.Equal(typeof(string), fooParam.ModelMetadata.ModelType);
+ Assert.Equal(BindingSource.Query, fooParam.Source);
+ Assert.False(fooParam.IsRequired);
+
+ var barParam = apiDescription.ParameterDescriptions[1];
+ Assert.Equal(typeof(int), barParam.Type);
+ Assert.Equal(typeof(int), barParam.ModelMetadata.ModelType);
+ Assert.Equal(BindingSource.Query, barParam.Source);
+ Assert.True(barParam.IsRequired);
+ }
+
[Fact]
public void RespectsProducesProblemExtensionMethod()
{
From 4655c3c9af8ee5cbb7b0b3d58d7c9e5917e29481 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Fri, 20 Aug 2021 13:22:53 -0700
Subject: [PATCH 4/9] HTTP/3: Use new QuicStream.ReadsCompleted property in
transport (#35483)
Co-authored-by: James Newton-King
---
.../src/Internal/QuicStreamContext.cs | 38 ++++++++++++++++++-
.../test/QuicStreamContextTests.cs | 32 ++++++++++++++++
2 files changed, 68 insertions(+), 2 deletions(-)
diff --git a/src/Servers/Kestrel/Transport.Quic/src/Internal/QuicStreamContext.cs b/src/Servers/Kestrel/Transport.Quic/src/Internal/QuicStreamContext.cs
index 51b17f1331f4..6de99384cbc8 100644
--- a/src/Servers/Kestrel/Transport.Quic/src/Internal/QuicStreamContext.cs
+++ b/src/Servers/Kestrel/Transport.Quic/src/Internal/QuicStreamContext.cs
@@ -187,7 +187,30 @@ private async Task DoReceive()
input.Advance(bytesReceived);
- var flushTask = input.FlushAsync();
+ ValueTask flushTask;
+
+ if (_stream.ReadsCompleted)
+ {
+ // If the data returned from ReadAsync is the final chunk on the stream then
+ // flush data and end pipe together with CompleteAsync.
+ //
+ // Getting data and complete together is important for HTTP/3 when parsing headers.
+ // It is important that it knows that there is no body after the headers.
+ var completeTask = input.CompleteAsync(ResolveCompleteReceiveException(error));
+ if (completeTask.IsCompletedSuccessfully)
+ {
+ // Fast path. CompleteAsync completed immediately.
+ flushTask = ValueTask.FromResult(new FlushResult(isCanceled: false, isCompleted: true));
+ }
+ else
+ {
+ flushTask = AwaitCompleteTaskAsync(completeTask);
+ }
+ }
+ else
+ {
+ flushTask = input.FlushAsync();
+ }
var paused = !flushTask.IsCompleted;
@@ -240,12 +263,23 @@ private async Task DoReceive()
finally
{
// If Shutdown() has already bee called, assume that was the reason ProcessReceives() exited.
- Input.Complete(_shutdownReadReason ?? _shutdownReason ?? error);
+ Input.Complete(ResolveCompleteReceiveException(error));
FireStreamClosed();
await _waitForConnectionClosedTcs.Task;
}
+
+ async static ValueTask AwaitCompleteTaskAsync(ValueTask completeTask)
+ {
+ await completeTask;
+ return new FlushResult(isCanceled: false, isCompleted: true);
+ }
+ }
+
+ private Exception? ResolveCompleteReceiveException(Exception? error)
+ {
+ return _shutdownReadReason ?? _shutdownReason ?? error;
}
private void FireStreamClosed()
diff --git a/src/Servers/Kestrel/Transport.Quic/test/QuicStreamContextTests.cs b/src/Servers/Kestrel/Transport.Quic/test/QuicStreamContextTests.cs
index 6e8dfced9488..4fcdac16e124 100644
--- a/src/Servers/Kestrel/Transport.Quic/test/QuicStreamContextTests.cs
+++ b/src/Servers/Kestrel/Transport.Quic/test/QuicStreamContextTests.cs
@@ -255,6 +255,38 @@ public async Task ClientToServerUnidirectionalStream_ClientAbort_ServerReceivesA
await closedTcs.Task.DefaultTimeout();
}
+ [ConditionalFact]
+ [MsQuicSupported]
+ public async Task ClientToServerUnidirectionalStream_CompleteWrites_PipeProvidesDataAndCompleteTogether()
+ {
+ // Arrange
+ await using var connectionListener = await QuicTestHelpers.CreateConnectionListenerFactory(LoggerFactory);
+
+ var options = QuicTestHelpers.CreateClientConnectionOptions(connectionListener.EndPoint);
+ using var quicConnection = new QuicConnection(QuicImplementationProviders.MsQuic, options);
+ await quicConnection.ConnectAsync().DefaultTimeout();
+
+ await using var serverConnection = await connectionListener.AcceptAndAddFeatureAsync().DefaultTimeout();
+
+ // Act
+ await using var clientStream = quicConnection.OpenUnidirectionalStream();
+ await clientStream.WriteAsync(TestData).DefaultTimeout();
+
+ await using var serverStream = await serverConnection.AcceptAsync().DefaultTimeout();
+ var readResult = await serverStream.Transport.Input.ReadAtLeastAsync(TestData.Length).DefaultTimeout();
+ serverStream.Transport.Input.AdvanceTo(readResult.Buffer.End);
+
+ var readResultTask = serverStream.Transport.Input.ReadAsync();
+
+ await clientStream.WriteAsync(TestData, endStream: true).DefaultTimeout();
+
+ // Assert
+ var completeReadResult = await readResultTask.DefaultTimeout();
+
+ Assert.Equal(TestData, completeReadResult.Buffer.ToArray());
+ Assert.True(completeReadResult.IsCompleted);
+ }
+
[ConditionalFact]
[MsQuicSupported]
public async Task ServerToClientUnidirectionalStream_ServerWritesDataAndCompletes_GracefullyClosed()
From 670cfd0695293ce8341944f456ce26b8b0826fa9 Mon Sep 17 00:00:00 2001
From: James Newton-King
Date: Sat, 21 Aug 2021 08:23:06 +1200
Subject: [PATCH 5/9] HTTP/3: Fix incorrectly pooling aborted streams (#35441)
---
.../src/Internal/QuicStreamContext.cs | 6 +-
.../test/QuicConnectionListenerTests.cs | 3 +-
.../test/QuicStreamContextTests.cs | 46 ++++++++++++++
.../Http3/Http3RequestTests.cs | 63 +++++++++++++++++++
4 files changed, 115 insertions(+), 3 deletions(-)
diff --git a/src/Servers/Kestrel/Transport.Quic/src/Internal/QuicStreamContext.cs b/src/Servers/Kestrel/Transport.Quic/src/Internal/QuicStreamContext.cs
index 6de99384cbc8..9f4b236e729d 100644
--- a/src/Servers/Kestrel/Transport.Quic/src/Internal/QuicStreamContext.cs
+++ b/src/Servers/Kestrel/Transport.Quic/src/Internal/QuicStreamContext.cs
@@ -449,11 +449,15 @@ private void ShutdownWrite(Exception? shutdownReason)
public override async ValueTask DisposeAsync()
{
+ // Be conservative about what can be pooled.
+ // Only pool bidirectional streams whose pipes have completed successfully and haven't been aborted.
CanReuse = _stream.CanRead && _stream.CanWrite
&& _transportPipeReader.IsCompletedSuccessfully
&& _transportPipeWriter.IsCompletedSuccessfully
&& !_clientAbort
- && !_serverAborted;
+ && !_serverAborted
+ && _shutdownReadReason == null
+ && _shutdownWriteReason == null;
_originalTransport.Input.Complete();
_originalTransport.Output.Complete();
diff --git a/src/Servers/Kestrel/Transport.Quic/test/QuicConnectionListenerTests.cs b/src/Servers/Kestrel/Transport.Quic/test/QuicConnectionListenerTests.cs
index ee265994c4cc..83ee6cc72080 100644
--- a/src/Servers/Kestrel/Transport.Quic/test/QuicConnectionListenerTests.cs
+++ b/src/Servers/Kestrel/Transport.Quic/test/QuicConnectionListenerTests.cs
@@ -115,8 +115,7 @@ public async Task ClientCertificate_Required_NotSent_ConnectionAborted()
// https://github.com/dotnet/runtime/issues/57246 The accept still completes even though the connection was rejected, but it's already failed.
var serverContext = await connectionListener.AcceptAndAddFeatureAsync().DefaultTimeout();
- qex = await Assert.ThrowsAsync(() => serverContext.ConnectAsync().DefaultTimeout());
- Assert.Equal("Failed to open stream to peer. Error Code: INVALID_STATE", qex.Message);
+ await Assert.ThrowsAsync(() => serverContext.ConnectAsync().DefaultTimeout());
}
}
}
diff --git a/src/Servers/Kestrel/Transport.Quic/test/QuicStreamContextTests.cs b/src/Servers/Kestrel/Transport.Quic/test/QuicStreamContextTests.cs
index 4fcdac16e124..c180230bb3d3 100644
--- a/src/Servers/Kestrel/Transport.Quic/test/QuicStreamContextTests.cs
+++ b/src/Servers/Kestrel/Transport.Quic/test/QuicStreamContextTests.cs
@@ -49,6 +49,52 @@ public async Task BidirectionalStream_ServerReadsDataAndCompletes_GracefullyClos
Assert.Contains(TestSink.Writes, m => m.Message.Contains(@"shutting down writes because: ""The QUIC transport's send loop completed gracefully.""."));
}
+ [ConditionalFact]
+ [MsQuicSupported]
+ public async Task BidirectionalStream_ReadAborted_NotPooled()
+ {
+ // Arrange
+ await using var connectionListener = await QuicTestHelpers.CreateConnectionListenerFactory(LoggerFactory);
+
+ var options = QuicTestHelpers.CreateClientConnectionOptions(connectionListener.EndPoint);
+ using var clientConnection = new QuicConnection(QuicImplementationProviders.MsQuic, options);
+ await clientConnection.ConnectAsync().DefaultTimeout();
+
+ await using var serverConnection = await connectionListener.AcceptAndAddFeatureAsync().DefaultTimeout();
+
+ // Act
+ var clientStream = clientConnection.OpenBidirectionalStream();
+ await clientStream.WriteAsync(TestData).DefaultTimeout();
+ var serverStream = await serverConnection.AcceptAsync().DefaultTimeout();
+ var readResult = await serverStream.Transport.Input.ReadAtLeastAsync(TestData.Length).DefaultTimeout();
+ serverStream.Transport.Input.AdvanceTo(readResult.Buffer.End);
+
+ await clientStream.WriteAsync(TestData).DefaultTimeout();
+
+ // Complete writing.
+ await serverStream.Transport.Output.CompleteAsync();
+
+ // Abort read-side of the stream and then complete pipe.
+ // This simulates what Kestrel does when a request finishes without
+ // reading the request body to the end.
+ serverStream.Features.Get().AbortRead((long)Http3ErrorCode.NoError, new ConnectionAbortedException("Test message."));
+ await serverStream.Transport.Input.CompleteAsync();
+
+ var quicStreamContext = Assert.IsType(serverStream);
+
+ // Both send and receive loops have exited.
+ await quicStreamContext._processingTask.DefaultTimeout();
+ Assert.True(quicStreamContext.CanWrite);
+ Assert.True(quicStreamContext.CanRead);
+
+ await quicStreamContext.DisposeAsync();
+
+ var quicConnectionContext = Assert.IsType(serverConnection);
+
+ // Assert
+ Assert.Equal(0, quicConnectionContext.StreamPool.Count);
+ }
+
[ConditionalTheory]
[MsQuicSupported]
[InlineData(1024)]
diff --git a/src/Servers/Kestrel/test/Interop.FunctionalTests/Http3/Http3RequestTests.cs b/src/Servers/Kestrel/test/Interop.FunctionalTests/Http3/Http3RequestTests.cs
index 9eef19cdad97..0bc59decd668 100644
--- a/src/Servers/Kestrel/test/Interop.FunctionalTests/Http3/Http3RequestTests.cs
+++ b/src/Servers/Kestrel/test/Interop.FunctionalTests/Http3/Http3RequestTests.cs
@@ -672,6 +672,69 @@ public async Task GET_ClientCancellationAfterResponseHeaders_RequestAbortRaised(
}
}
+ [ConditionalFact]
+ [MsQuicSupported]
+ public async Task StreamResponseContent_DelayAndTrailers_ClientSuccess()
+ {
+ // Arrange
+ var builder = CreateHostBuilder(async context =>
+ {
+ var feature = context.Features.Get();
+
+ for (var i = 1; i < 200; i++)
+ {
+ feature.Trailers.Append($"trailer-{i}", new string('!', i));
+ }
+
+ Logger.LogInformation($"Server trailer count: {feature.Trailers.Count}");
+
+ await context.Request.BodyReader.ReadAtLeastAsync(TestData.Length);
+
+ for (var i = 0; i < 3; i++)
+ {
+ await context.Response.BodyWriter.WriteAsync(TestData);
+
+ await Task.Delay(TimeSpan.FromMilliseconds(10));
+ }
+ });
+
+ using (var host = builder.Build())
+ using (var client = Http3Helpers.CreateClient())
+ {
+ await host.StartAsync();
+
+ // Act
+ var request = new HttpRequestMessage(HttpMethod.Post, $"https://127.0.0.1:{host.GetPort()}/");
+ request.Content = new ByteArrayContent(TestData);
+ request.Version = HttpVersion.Version30;
+ request.VersionPolicy = HttpVersionPolicy.RequestVersionExact;
+
+ var response = await client.SendAsync(request, CancellationToken.None);
+ response.EnsureSuccessStatusCode();
+
+ var responseStream = await response.Content.ReadAsStreamAsync();
+
+ await responseStream.ReadUntilEndAsync();
+
+ Logger.LogInformation($"Client trailer count: {response.TrailingHeaders.Count()}");
+
+ for (var i = 1; i < 200; i++)
+ {
+ try
+ {
+ var value = response.TrailingHeaders.GetValues($"trailer-{i}").Single();
+ Assert.Equal(new string('!', i), value);
+ }
+ catch (Exception ex)
+ {
+ throw new Exception($"Error checking trailer {i}", ex);
+ }
+ }
+
+ await host.StopAsync();
+ }
+ }
+
[ConditionalFact]
[MsQuicSupported]
public async Task GET_MultipleRequests_ConnectionAndTraceIdsUpdated()
From e8e2b5f13862602992a7e9da76eeaef5cf914f07 Mon Sep 17 00:00:00 2001
From: Mackinnon Buck
Date: Fri, 20 Aug 2021 14:19:45 -0700
Subject: [PATCH 6/9] [release/6.0-rc1] Binding support for 'bool' values with
InputRadioGroup and InputSelect (#35523)
* Binding support for 'bool' values with InputRadioGroup and InputSelect (#35318)
* Update CodeCheck.ps1
Co-authored-by: Brennan
---
eng/scripts/CodeCheck.ps1 | 2 +-
src/Components/Components.slnf | 15 ++++-
.../Web/src/Forms/InputExtensions.cs | 52 +++++++++++++--
src/Components/Web/src/Forms/InputSelect.cs | 16 +++++
.../Web/src/PublicAPI.Unshipped.txt | 1 +
.../test/E2ETest/Tests/FormsTest.cs | 64 +++++++++++++++++++
.../TypicalValidationComponent.razor | 21 ++++++
7 files changed, 160 insertions(+), 11 deletions(-)
diff --git a/eng/scripts/CodeCheck.ps1 b/eng/scripts/CodeCheck.ps1
index c3e02ff55716..73691561e618 100644
--- a/eng/scripts/CodeCheck.ps1
+++ b/eng/scripts/CodeCheck.ps1
@@ -213,7 +213,7 @@ try {
}
}
# Check for changes in Unshipped in servicing branches
- if ($targetBranch -like 'release*' -and $targetBranch -notlike '*preview*' -and $file -like '*PublicAPI.Unshipped.txt') {
+ if ($targetBranch -like 'release*' -and $targetBranch -notlike '*preview*' -and $targetBranch -notlike '*rc*' -and $file -like '*PublicAPI.Unshipped.txt') {
$changedAPIBaselines.Add($file)
}
}
diff --git a/src/Components/Components.slnf b/src/Components/Components.slnf
index 14878520e4d5..7bd92c90828f 100644
--- a/src/Components/Components.slnf
+++ b/src/Components/Components.slnf
@@ -46,23 +46,27 @@
"src\\Components\\test\\E2ETestMigration\\Microsoft.AspNetCore.Components.Migration.E2ETests.csproj",
"src\\Components\\test\\E2ETest\\Microsoft.AspNetCore.Components.E2ETests.csproj",
"src\\Components\\test\\testassets\\BasicTestApp\\BasicTestApp.csproj",
+ "src\\Components\\test\\testassets\\ComponentsApp.App\\ComponentsApp.App.csproj",
"src\\Components\\test\\testassets\\ComponentsApp.Server\\ComponentsApp.Server.csproj",
"src\\Components\\test\\testassets\\GlobalizationWasmApp\\GlobalizationWasmApp.csproj",
+ "src\\Components\\test\\testassets\\LazyTestContentPackage\\LazyTestContentPackage.csproj",
"src\\Components\\test\\testassets\\TestContentPackage\\TestContentPackage.csproj",
"src\\Components\\test\\testassets\\TestServer\\Components.TestServer.csproj",
"src\\DataProtection\\Abstractions\\src\\Microsoft.AspNetCore.DataProtection.Abstractions.csproj",
"src\\DataProtection\\Cryptography.Internal\\src\\Microsoft.AspNetCore.Cryptography.Internal.csproj",
"src\\DataProtection\\Cryptography.KeyDerivation\\src\\Microsoft.AspNetCore.Cryptography.KeyDerivation.csproj",
"src\\DataProtection\\DataProtection\\src\\Microsoft.AspNetCore.DataProtection.csproj",
+ "src\\DataProtection\\Extensions\\src\\Microsoft.AspNetCore.DataProtection.Extensions.csproj",
"src\\DefaultBuilder\\src\\Microsoft.AspNetCore.csproj",
+ "src\\Extensions\\Features\\src\\Microsoft.Extensions.Features.csproj",
"src\\Features\\JsonPatch\\src\\Microsoft.AspNetCore.JsonPatch.csproj",
+ "src\\FileProviders\\Embedded\\src\\Microsoft.Extensions.FileProviders.Embedded.csproj",
"src\\Hosting\\Abstractions\\src\\Microsoft.AspNetCore.Hosting.Abstractions.csproj",
"src\\Hosting\\Hosting\\src\\Microsoft.AspNetCore.Hosting.csproj",
"src\\Hosting\\Server.Abstractions\\src\\Microsoft.AspNetCore.Hosting.Server.Abstractions.csproj",
"src\\Html.Abstractions\\src\\Microsoft.AspNetCore.Html.Abstractions.csproj",
"src\\Http\\Authentication.Abstractions\\src\\Microsoft.AspNetCore.Authentication.Abstractions.csproj",
"src\\Http\\Authentication.Core\\src\\Microsoft.AspNetCore.Authentication.Core.csproj",
- "src\\Extensions\\Features\\src\\Microsoft.Extensions.Features.csproj",
"src\\Http\\Headers\\src\\Microsoft.Net.Http.Headers.csproj",
"src\\Http\\Http.Abstractions\\src\\Microsoft.AspNetCore.Http.Abstractions.csproj",
"src\\Http\\Http.Extensions\\src\\Microsoft.AspNetCore.Http.Extensions.csproj",
@@ -79,6 +83,8 @@
"src\\Identity\\Extensions.Stores\\src\\Microsoft.Extensions.Identity.Stores.csproj",
"src\\Identity\\UI\\src\\Microsoft.AspNetCore.Identity.UI.csproj",
"src\\JSInterop\\Microsoft.JSInterop\\src\\Microsoft.JSInterop.csproj",
+ "src\\Localization\\Abstractions\\src\\Microsoft.Extensions.Localization.Abstractions.csproj",
+ "src\\Localization\\Localization\\src\\Microsoft.Extensions.Localization.csproj",
"src\\Middleware\\CORS\\src\\Microsoft.AspNetCore.Cors.csproj",
"src\\Middleware\\Diagnostics.Abstractions\\src\\Microsoft.AspNetCore.Diagnostics.Abstractions.csproj",
"src\\Middleware\\Diagnostics\\src\\Microsoft.AspNetCore.Diagnostics.csproj",
@@ -96,6 +102,7 @@
"src\\Mvc\\Mvc.Core\\src\\Microsoft.AspNetCore.Mvc.Core.csproj",
"src\\Mvc\\Mvc.Cors\\src\\Microsoft.AspNetCore.Mvc.Cors.csproj",
"src\\Mvc\\Mvc.DataAnnotations\\src\\Microsoft.AspNetCore.Mvc.DataAnnotations.csproj",
+ "src\\Mvc\\Mvc.Formatters.Json\\src\\Microsoft.AspNetCore.Mvc.Formatters.Json.csproj",
"src\\Mvc\\Mvc.Localization\\src\\Microsoft.AspNetCore.Mvc.Localization.csproj",
"src\\Mvc\\Mvc.NewtonsoftJson\\src\\Microsoft.AspNetCore.Mvc.NewtonsoftJson.csproj",
"src\\Mvc\\Mvc.RazorPages\\src\\Microsoft.AspNetCore.Mvc.RazorPages.csproj",
@@ -103,6 +110,7 @@
"src\\Mvc\\Mvc.TagHelpers\\src\\Microsoft.AspNetCore.Mvc.TagHelpers.csproj",
"src\\Mvc\\Mvc.ViewFeatures\\src\\Microsoft.AspNetCore.Mvc.ViewFeatures.csproj",
"src\\Mvc\\Mvc\\src\\Microsoft.AspNetCore.Mvc.csproj",
+ "src\\ObjectPool\\src\\Microsoft.Extensions.ObjectPool.csproj",
"src\\Razor\\Razor.Runtime\\src\\Microsoft.AspNetCore.Razor.Runtime.csproj",
"src\\Razor\\Razor\\src\\Microsoft.AspNetCore.Razor.csproj",
"src\\Security\\Authentication\\Cookies\\src\\Microsoft.AspNetCore.Authentication.Cookies.csproj",
@@ -128,7 +136,8 @@
"src\\SignalR\\common\\SignalR.Common\\src\\Microsoft.AspNetCore.SignalR.Common.csproj",
"src\\SignalR\\server\\Core\\src\\Microsoft.AspNetCore.SignalR.Core.csproj",
"src\\SignalR\\server\\SignalR\\src\\Microsoft.AspNetCore.SignalR.csproj",
- "src\\Testing\\src\\Microsoft.AspNetCore.Testing.csproj"
+ "src\\Testing\\src\\Microsoft.AspNetCore.Testing.csproj",
+ "src\\WebEncoders\\src\\Microsoft.Extensions.WebEncoders.csproj"
]
}
-}
+}
\ No newline at end of file
diff --git a/src/Components/Web/src/Forms/InputExtensions.cs b/src/Components/Web/src/Forms/InputExtensions.cs
index f0065f0611ff..32f8b46c838d 100644
--- a/src/Components/Web/src/Forms/InputExtensions.cs
+++ b/src/Components/Web/src/Forms/InputExtensions.cs
@@ -16,23 +16,61 @@ internal static class InputExtensions
{
try
{
- if (BindConverter.TryConvertTo(value, CultureInfo.CurrentCulture, out var parsedValue))
+ // We special-case bool values because BindConverter reserves bool conversion for conditional attributes.
+ if (typeof(TValue) == typeof(bool))
+ {
+ if (TryConvertToBool(value, out result))
+ {
+ validationErrorMessage = null;
+ return true;
+ }
+ }
+ else if (typeof(TValue) == typeof(bool?))
+ {
+ if (TryConvertToNullableBool(value, out result))
+ {
+ validationErrorMessage = null;
+ return true;
+ }
+ }
+ else if (BindConverter.TryConvertTo(value, CultureInfo.CurrentCulture, out var parsedValue))
{
result = parsedValue;
validationErrorMessage = null;
return true;
}
- else
- {
- result = default;
- validationErrorMessage = $"The {input.DisplayName ?? input.FieldIdentifier.FieldName} field is not valid.";
- return false;
- }
+
+ result = default;
+ validationErrorMessage = $"The {input.DisplayName ?? input.FieldIdentifier.FieldName} field is not valid.";
+ return false;
}
catch (InvalidOperationException ex)
{
throw new InvalidOperationException($"{input.GetType()} does not support the type '{typeof(TValue)}'.", ex);
}
}
+
+ private static bool TryConvertToBool(string? value, out TValue result)
+ {
+ if (bool.TryParse(value, out var @bool))
+ {
+ result = (TValue)(object)@bool;
+ return true;
+ }
+
+ result = default!;
+ return false;
+ }
+
+ private static bool TryConvertToNullableBool(string? value, out TValue result)
+ {
+ if (string.IsNullOrEmpty(value))
+ {
+ result = default!;
+ return true;
+ }
+
+ return TryConvertToBool(value, out result);
+ }
}
}
diff --git a/src/Components/Web/src/Forms/InputSelect.cs b/src/Components/Web/src/Forms/InputSelect.cs
index 477c8d69326b..cc4ec970b571 100644
--- a/src/Components/Web/src/Forms/InputSelect.cs
+++ b/src/Components/Web/src/Forms/InputSelect.cs
@@ -64,6 +64,22 @@ protected override void BuildRenderTree(RenderTreeBuilder builder)
protected override bool TryParseValueFromString(string? value, [MaybeNullWhen(false)] out TValue result, [NotNullWhen(false)] out string? validationErrorMessage)
=> this.TryParseSelectableValueFromString(value, out result, out validationErrorMessage);
+ ///
+ protected override string? FormatValueAsString(TValue? value)
+ {
+ // We special-case bool values because BindConverter reserves bool conversion for conditional attributes.
+ if (typeof(TValue) == typeof(bool))
+ {
+ return (bool)(object)value! ? "true" : "false";
+ }
+ else if (typeof(TValue) == typeof(bool?))
+ {
+ return value is not null && (bool)(object)value ? "true" : "false";
+ }
+
+ return base.FormatValueAsString(value);
+ }
+
private void SetCurrentValueAsStringArray(string?[]? value)
{
CurrentValue = BindConverter.TryConvertTo(value, CultureInfo.CurrentCulture, out var result)
diff --git a/src/Components/Web/src/PublicAPI.Unshipped.txt b/src/Components/Web/src/PublicAPI.Unshipped.txt
index 3463104ba853..5f28157c5bb1 100644
--- a/src/Components/Web/src/PublicAPI.Unshipped.txt
+++ b/src/Components/Web/src/PublicAPI.Unshipped.txt
@@ -60,6 +60,7 @@ Microsoft.AspNetCore.Components.Web.PageTitle.ChildContent.set -> void
Microsoft.AspNetCore.Components.Web.PageTitle.PageTitle() -> void
override Microsoft.AspNetCore.Components.Forms.InputDate.OnParametersSet() -> void
abstract Microsoft.AspNetCore.Components.RenderTree.WebRenderer.AttachRootComponentToBrowser(int componentId, string! domElementSelector) -> void
+override Microsoft.AspNetCore.Components.Forms.InputSelect.FormatValueAsString(TValue? value) -> string?
override Microsoft.AspNetCore.Components.RenderTree.WebRenderer.Dispose(bool disposing) -> void
override Microsoft.AspNetCore.Components.Routing.FocusOnNavigate.OnAfterRenderAsync(bool firstRender) -> System.Threading.Tasks.Task!
override Microsoft.AspNetCore.Components.Routing.FocusOnNavigate.OnParametersSet() -> void
diff --git a/src/Components/test/E2ETest/Tests/FormsTest.cs b/src/Components/test/E2ETest/Tests/FormsTest.cs
index d1bbdf36f910..c95813707567 100644
--- a/src/Components/test/E2ETest/Tests/FormsTest.cs
+++ b/src/Components/test/E2ETest/Tests/FormsTest.cs
@@ -355,6 +355,34 @@ public void InputSelectInteractsWithEditContext()
Browser.Equal(new[] { "The TicketClass field is not valid." }, messagesAccessor);
}
+ [Fact]
+ public void InputSelectInteractsWithEditContext_BoolValues()
+ {
+ var appElement = MountTypicalValidationComponent();
+ var ticketClassInput = new SelectElement(appElement.FindElement(By.ClassName("select-bool-values")).FindElement(By.TagName("select")));
+ var select = ticketClassInput.WrappedElement;
+ var messagesAccessor = CreateValidationMessagesAccessor(appElement);
+
+ // Invalidates on edit
+ Browser.Equal("valid", () => select.GetAttribute("class"));
+ ticketClassInput.SelectByText("true");
+ Browser.Equal("modified invalid", () => select.GetAttribute("class"));
+ Browser.Equal(new[] { "77 + 33 = 100 is a false statement, unfortunately." }, messagesAccessor);
+
+ // Nullable conversion can fail
+ ticketClassInput.SelectByText("(select)");
+ Browser.Equal("modified invalid", () => select.GetAttribute("class"));
+ Browser.Equal(new[]
+ {
+ "77 + 33 = 100 is a false statement, unfortunately.",
+ "The IsSelectMathStatementTrue field is not valid."
+ }, messagesAccessor);
+
+ // Can become valid
+ ticketClassInput.SelectByText("false");
+ Browser.Equal("modified valid", () => select.GetAttribute("class"));
+ }
+
[Fact]
public void InputSelectInteractsWithEditContext_MultipleAttribute()
{
@@ -521,6 +549,42 @@ public void InputRadioGroupsWithNamesNestedInteractWithEditContext()
IReadOnlyCollection FindColorInputs() => group.FindElements(By.Name("color"));
}
+ [Fact]
+ public void InputRadioGroupWithBoolValuesInteractsWithEditContext()
+ {
+ var appElement = MountTypicalValidationComponent();
+ var messagesAccessor = CreateValidationMessagesAccessor(appElement);
+
+ // Validate selected inputs
+ Browser.False(() => FindTrueInput().Selected);
+ Browser.True(() => FindFalseInput().Selected);
+
+ // Validates on edit
+ Browser.Equal("valid", () => FindTrueInput().GetAttribute("class"));
+ Browser.Equal("valid", () => FindFalseInput().GetAttribute("class"));
+
+ FindTrueInput().Click();
+
+ Browser.Equal("modified valid", () => FindTrueInput().GetAttribute("class"));
+ Browser.Equal("modified valid", () => FindFalseInput().GetAttribute("class"));
+
+ // Can become invalid
+ FindFalseInput().Click();
+
+ Browser.Equal("modified invalid", () => FindTrueInput().GetAttribute("class"));
+ Browser.Equal("modified invalid", () => FindFalseInput().GetAttribute("class"));
+ Browser.Equal(new[] { "7 * 3 = 21 is a true statement." }, messagesAccessor);
+
+ IReadOnlyCollection FindInputs()
+ => appElement.FindElement(By.ClassName("radio-group-bool-values")).FindElements(By.TagName("input"));
+
+ IWebElement FindTrueInput()
+ => FindInputs().First(i => string.Equals("True", i.GetAttribute("value")));
+
+ IWebElement FindFalseInput()
+ => FindInputs().First(i => string.Equals("False", i.GetAttribute("value")));
+ }
+
[Fact]
public void CanWireUpINotifyPropertyChangedToEditContext()
{
diff --git a/src/Components/test/testassets/BasicTestApp/FormsTest/TypicalValidationComponent.razor b/src/Components/test/testassets/BasicTestApp/FormsTest/TypicalValidationComponent.razor
index 458759f9ab62..3fb9217a5fbd 100644
--- a/src/Components/test/testassets/BasicTestApp/FormsTest/TypicalValidationComponent.razor
+++ b/src/Components/test/testassets/BasicTestApp/FormsTest/TypicalValidationComponent.razor
@@ -70,6 +70,14 @@
@string.Join(", ", person.HostileStrings)
+
+ T/F: 77 + 33 = 100
+
+
+
+
+
+
Airline:
@@ -96,6 +104,13 @@
+
+ T/F: 7 * 3 = 21
+
+ true
+ false
+
+
Socks color:
@@ -188,6 +203,12 @@
[Required, EnumDataType(typeof(Country))]
public Country? Country { get; set; } = null;
+ [Required, Range(typeof(bool), "false", "false", ErrorMessage = "77 + 33 = 100 is a false statement, unfortunately.")]
+ public bool? IsSelectMathStatementTrue { get; set; } = null;
+
+ [Required, Range(typeof(bool), "true", "true", ErrorMessage = "7 * 3 = 21 is a true statement.")]
+ public bool IsRadioMathStatementTrue { get; set; } = false;
+
[Required, StringLength(10), CustomValidationClassName(Valid = "valid-socks", Invalid = "invalid-socks")]
public string SocksColor { get; set; }
From 115de742a614e14a33adee517ca798c432daf167 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]"
<42748379+dotnet-maestro[bot]@users.noreply.github.com>
Date: Fri, 20 Aug 2021 22:00:52 +0000
Subject: [PATCH 7/9] [release/6.0-rc1] Update dependencies from dotnet/efcore
dotnet/runtime (#35558)
* Update dependencies from https://github.com/dotnet/efcore build 20210820.19
Microsoft.EntityFrameworkCore.Tools , dotnet-ef , Microsoft.EntityFrameworkCore , Microsoft.EntityFrameworkCore.SqlServer , Microsoft.EntityFrameworkCore.InMemory , Microsoft.EntityFrameworkCore.Relational , Microsoft.EntityFrameworkCore.Sqlite , Microsoft.EntityFrameworkCore.Design
From Version 6.0.0-rc.1.21420.8 -> To Version 6.0.0-rc.1.21420.19
* Update dependencies from https://github.com/dotnet/efcore build 20210820.22
Microsoft.EntityFrameworkCore.Tools , dotnet-ef , Microsoft.EntityFrameworkCore , Microsoft.EntityFrameworkCore.SqlServer , Microsoft.EntityFrameworkCore.InMemory , Microsoft.EntityFrameworkCore.Relational , Microsoft.EntityFrameworkCore.Sqlite , Microsoft.EntityFrameworkCore.Design
From Version 6.0.0-rc.1.21420.8 -> To Version 6.0.0-rc.1.21420.22
* Update dependencies from https://github.com/dotnet/efcore build 20210820.30
Microsoft.EntityFrameworkCore.Tools , dotnet-ef , Microsoft.EntityFrameworkCore , Microsoft.EntityFrameworkCore.SqlServer , Microsoft.EntityFrameworkCore.InMemory , Microsoft.EntityFrameworkCore.Relational , Microsoft.EntityFrameworkCore.Sqlite , Microsoft.EntityFrameworkCore.Design
From Version 6.0.0-rc.1.21420.8 -> To Version 6.0.0-rc.1.21420.30
* Update dependencies from https://github.com/dotnet/runtime build 20210820.15
Microsoft.NETCore.Platforms , Microsoft.NETCore.BrowserDebugHost.Transport , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.Win32.SystemEvents , Microsoft.NET.Runtime.MonoAOTCompiler.Task , Microsoft.Internal.Runtime.AspNetCore.Transport , Microsoft.Extensions.Primitives , Microsoft.Extensions.Options.DataAnnotations , Microsoft.Extensions.Options.ConfigurationExtensions , Microsoft.NET.Runtime.WebAssembly.Sdk , Microsoft.Extensions.Options , Microsoft.Extensions.Logging.TraceSource , Microsoft.Extensions.Logging.EventSource , Microsoft.Extensions.Configuration.UserSecrets , Microsoft.Extensions.Configuration.Json , Microsoft.Extensions.Configuration.Ini , Microsoft.Extensions.Configuration.FileExtensions , Microsoft.Extensions.Configuration.EnvironmentVariables , Microsoft.Extensions.Configuration.CommandLine , Microsoft.Extensions.Configuration.Binder , Microsoft.Extensions.Configuration.Xml , Microsoft.Extensions.Configuration.Abstractions , Microsoft.Extensions.Caching.Memory , Microsoft.Extensions.Caching.Abstractions , Microsoft.Extensions.Configuration , Microsoft.Extensions.DependencyInjection , Microsoft.Extensions.DependencyInjection.Abstractions , Microsoft.Extensions.Logging.EventLog , Microsoft.Extensions.Logging.Debug , Microsoft.Extensions.Logging.Console , Microsoft.Extensions.Logging.Configuration , Microsoft.Extensions.Logging.Abstractions , Microsoft.Extensions.Logging , Microsoft.Extensions.Http , Microsoft.Extensions.Hosting.Abstractions , Microsoft.Extensions.Hosting , Microsoft.Extensions.HostFactoryResolver.Sources , Microsoft.Extensions.FileSystemGlobbing , Microsoft.Extensions.FileProviders.Physical , Microsoft.Extensions.FileProviders.Composite , Microsoft.Extensions.FileProviders.Abstractions , Microsoft.Extensions.DependencyModel , Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm , Microsoft.NETCore.App.Ref , System.Windows.Extensions , System.Threading.Channels , System.Text.Json , System.Text.Encodings.Web , System.ServiceProcess.ServiceController , System.Drawing.Common , System.DirectoryServices.Protocols , System.Diagnostics.EventLog , System.Diagnostics.DiagnosticSource , System.IO.Pipelines , System.Security.Permissions , System.Security.Cryptography.Xml , System.Security.Cryptography.Pkcs , System.Runtime.CompilerServices.Unsafe , System.Resources.Extensions , System.Reflection.Metadata , System.Net.Http.WinHttpHandler , System.Net.Http.Json
From Version 6.0.0-rc.1.21420.7 -> To Version 6.0.0-rc.1.21420.15
Co-authored-by: dotnet-maestro[bot]
---
eng/Version.Details.xml | 280 ++++++++++++++++++++--------------------
eng/Versions.props | 140 ++++++++++----------
2 files changed, 210 insertions(+), 210 deletions(-)
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 69dcc8b46531..a6def80469f8 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -9,292 +9,292 @@
-->
-
+
https://github.com/dotnet/efcore
- 2de54a8bb5f757cd72cd8a2c8a914d95d857ee2f
+ e6fe1bcc33895bb730113c65f142a73982a7977b
-
+
https://github.com/dotnet/efcore
- 2de54a8bb5f757cd72cd8a2c8a914d95d857ee2f
+ e6fe1bcc33895bb730113c65f142a73982a7977b
-
+
https://github.com/dotnet/efcore
- 2de54a8bb5f757cd72cd8a2c8a914d95d857ee2f
+ e6fe1bcc33895bb730113c65f142a73982a7977b
-
+
https://github.com/dotnet/efcore
- 2de54a8bb5f757cd72cd8a2c8a914d95d857ee2f
+ e6fe1bcc33895bb730113c65f142a73982a7977b
-
+
https://github.com/dotnet/efcore
- 2de54a8bb5f757cd72cd8a2c8a914d95d857ee2f
+ e6fe1bcc33895bb730113c65f142a73982a7977b
-
+
https://github.com/dotnet/efcore
- 2de54a8bb5f757cd72cd8a2c8a914d95d857ee2f
+ e6fe1bcc33895bb730113c65f142a73982a7977b
-
+
https://github.com/dotnet/efcore
- 2de54a8bb5f757cd72cd8a2c8a914d95d857ee2f
+ e6fe1bcc33895bb730113c65f142a73982a7977b
-
+
https://github.com/dotnet/efcore
- 2de54a8bb5f757cd72cd8a2c8a914d95d857ee2f
+ e6fe1bcc33895bb730113c65f142a73982a7977b
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
-
+
https://github.com/dotnet/runtime
- 27d062a8f09c7246bc0597d9f74d638a17bf3438
+ 236e490d4fb624498e10dc5a3b78fda24b55a35e
https://github.com/dotnet/arcade
diff --git a/eng/Versions.props b/eng/Versions.props
index 5a64dabed783..6bec7ab9ec52 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -65,78 +65,78 @@
-->
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
- 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
+ 6.0.0-rc.1.21420.15
- 6.0.0-rc.1.21420.7
+ 6.0.0-rc.1.21420.15
- 6.0.0-rc.1.21420.8
- 6.0.0-rc.1.21420.8
- 6.0.0-rc.1.21420.8
- 6.0.0-rc.1.21420.8
- 6.0.0-rc.1.21420.8
- 6.0.0-rc.1.21420.8
- 6.0.0-rc.1.21420.8
- 6.0.0-rc.1.21420.8
+ 6.0.0-rc.1.21420.30
+ 6.0.0-rc.1.21420.30
+ 6.0.0-rc.1.21420.30
+ 6.0.0-rc.1.21420.30
+ 6.0.0-rc.1.21420.30
+ 6.0.0-rc.1.21420.30
+ 6.0.0-rc.1.21420.30
+ 6.0.0-rc.1.21420.30
6.0.0-beta.21418.12
6.0.0-beta.21418.12
From ac45a990df7d64ba9354f0e3193851bb94ce4829 Mon Sep 17 00:00:00 2001
From: Rafiki Assumani <87031580+rafikiassumaniMSFT@users.noreply.github.com>
Date: Fri, 20 Aug 2021 21:31:08 -0500
Subject: [PATCH 8/9] Improve Minimal APIs support for request media types
#35082 (#35230) (#35579)
* add support for request media types
---
.../src/Metadata/IAcceptsMetadata.cs | 25 +
.../src/PublicAPI.Unshipped.txt | 7 +
.../src/RequestDelegateResult.cs | 33 +
...icrosoft.AspNetCore.Http.Extensions.csproj | 3 +-
.../src/PublicAPI.Unshipped.txt | 4 +-
.../src/RequestDelegateFactory.cs | 49 +-
.../test/RequestDelegateFactoryTests.cs | 190 ++++--
...malActionEndpointRouteBuilderExtensions.cs | 11 +-
.../RoutingServiceCollectionExtensions.cs | 1 +
.../src/Matching/AcceptsMatcherPolicy.cs | 392 +++++++++++
.../src/Microsoft.AspNetCore.Routing.csproj | 14 +-
.../Matching/AcceptsMatcherPolicyTest.cs} | 72 +-
.../Microsoft.AspNetCore.Routing.Tests.csproj | 6 +-
.../src/DefaultApiDescriptionProvider.cs | 1 +
...pointMetadataApiDescriptionProviderTest.cs | 33 +
.../IApiRequestMetadataProvider.cs | 3 +-
...nApiEndpointConventionBuilderExtensions.cs | 38 +-
src/Mvc/Mvc.Core/src/ConsumesAttribute.cs | 52 +-
.../MvcCoreServiceCollectionExtensions.cs | 2 +-
.../src/Formatters/AcceptHeaderParser.cs | 1 +
.../src/Formatters/HttpParseResult.cs | 12 -
.../src/Formatters/HttpTokenParsingRules.cs | 270 --------
src/Mvc/Mvc.Core/src/Formatters/MediaType.cs | 184 +-----
.../src/Microsoft.AspNetCore.Mvc.Core.csproj | 3 +
src/Mvc/Mvc.Core/src/PublicAPI.Unshipped.txt | 3 +
.../src/Routing/ActionEndpointFactory.cs | 5 +-
.../src/Routing/ConsumesMatcherPolicy.cs | 394 -----------
.../Mvc.Core/src/Routing/ConsumesMetadata.cs | 24 -
.../Mvc.Core/src/Routing/IConsumesMetadata.cs | 13 -
.../MvcCoreServiceCollectionExtensionsTest.cs | 2 +-
.../SimpleWithWebApplicationBuilderTests.cs | 43 ++
.../Program.cs | 5 +-
src/Shared/MediaType/HttpTokenParsingRule.cs | 277 ++++++++
.../MediaType/ReadOnlyMediaTypeHeaderValue.cs | 625 ++++++++++++++++++
src/Shared/RoutingMetadata/AcceptsMetadata.cs | 54 ++
35 files changed, 1839 insertions(+), 1012 deletions(-)
create mode 100644 src/Http/Http.Abstractions/src/Metadata/IAcceptsMetadata.cs
create mode 100644 src/Http/Http.Abstractions/src/RequestDelegateResult.cs
create mode 100644 src/Http/Routing/src/Matching/AcceptsMatcherPolicy.cs
rename src/{Mvc/Mvc.Core/test/Routing/ConsumesMatcherPolicyTest.cs => Http/Routing/test/UnitTests/Matching/AcceptsMatcherPolicyTest.cs} (85%)
delete mode 100644 src/Mvc/Mvc.Core/src/Formatters/HttpParseResult.cs
delete mode 100644 src/Mvc/Mvc.Core/src/Formatters/HttpTokenParsingRules.cs
delete mode 100644 src/Mvc/Mvc.Core/src/Routing/ConsumesMatcherPolicy.cs
delete mode 100644 src/Mvc/Mvc.Core/src/Routing/ConsumesMetadata.cs
delete mode 100644 src/Mvc/Mvc.Core/src/Routing/IConsumesMetadata.cs
create mode 100644 src/Shared/MediaType/HttpTokenParsingRule.cs
create mode 100644 src/Shared/MediaType/ReadOnlyMediaTypeHeaderValue.cs
create mode 100644 src/Shared/RoutingMetadata/AcceptsMetadata.cs
diff --git a/src/Http/Http.Abstractions/src/Metadata/IAcceptsMetadata.cs b/src/Http/Http.Abstractions/src/Metadata/IAcceptsMetadata.cs
new file mode 100644
index 000000000000..a3325158a7ac
--- /dev/null
+++ b/src/Http/Http.Abstractions/src/Metadata/IAcceptsMetadata.cs
@@ -0,0 +1,25 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+
+
+using System.Collections.Generic;
+
+namespace Microsoft.AspNetCore.Http.Metadata
+{
+ ///
+ /// Interface for accepting request media types.
+ ///
+ public interface IAcceptsMetadata
+ {
+ ///
+ /// Gets a list of the allowed request content types.
+ /// If the incoming request does not have a Content-Type with one of these values, the request will be rejected with a 415 response.
+ ///
+ IReadOnlyList ContentTypes { get; }
+
+ ///
+ /// Gets the type being read from the request.
+ ///
+ Type? RequestType { get; }
+ }
+}
diff --git a/src/Http/Http.Abstractions/src/PublicAPI.Unshipped.txt b/src/Http/Http.Abstractions/src/PublicAPI.Unshipped.txt
index 9338ae940214..d689bce14e4b 100644
--- a/src/Http/Http.Abstractions/src/PublicAPI.Unshipped.txt
+++ b/src/Http/Http.Abstractions/src/PublicAPI.Unshipped.txt
@@ -7,6 +7,9 @@
*REMOVED*abstract Microsoft.AspNetCore.Http.HttpRequest.ContentType.get -> string!
Microsoft.AspNetCore.Http.IResult
Microsoft.AspNetCore.Http.IResult.ExecuteAsync(Microsoft.AspNetCore.Http.HttpContext! httpContext) -> System.Threading.Tasks.Task!
+Microsoft.AspNetCore.Http.Metadata.IAcceptsMetadata
+Microsoft.AspNetCore.Http.Metadata.IAcceptsMetadata.ContentTypes.get -> System.Collections.Generic.IReadOnlyList!
+Microsoft.AspNetCore.Http.Metadata.IAcceptsMetadata.RequestType.get -> System.Type?
Microsoft.AspNetCore.Http.Metadata.IFromBodyMetadata
Microsoft.AspNetCore.Http.Metadata.IFromBodyMetadata.AllowEmpty.get -> bool
Microsoft.AspNetCore.Http.Metadata.IFromHeaderMetadata
@@ -18,6 +21,10 @@ Microsoft.AspNetCore.Http.Metadata.IFromRouteMetadata.Name.get -> string?
Microsoft.AspNetCore.Http.Metadata.IFromServiceMetadata
Microsoft.AspNetCore.Http.Endpoint.Endpoint(Microsoft.AspNetCore.Http.RequestDelegate? requestDelegate, Microsoft.AspNetCore.Http.EndpointMetadataCollection? metadata, string? displayName) -> void
Microsoft.AspNetCore.Http.Endpoint.RequestDelegate.get -> Microsoft.AspNetCore.Http.RequestDelegate?
+Microsoft.AspNetCore.Http.RequestDelegateResult
+Microsoft.AspNetCore.Http.RequestDelegateResult.EndpointMetadata.get -> System.Collections.Generic.IReadOnlyList