diff --git a/eng/Signing.props b/eng/Signing.props index c9d7dac5a8..829cd569e9 100644 --- a/eng/Signing.props +++ b/eng/Signing.props @@ -105,10 +105,11 @@ + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index a841516464..802ddae53a 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -13,285 +13,285 @@ https://github.com/aspnet/Blazor 46d3c36a3b1655c86e122065c4f896c50d986ff0 - + https://github.com/aspnet/AspNetCore-Tooling - dab77485d72ed4e533c8cdd0267fa834fe894b6d + 4aa61a13b2a50b9849c3828d8b048dfb9861111f - + https://github.com/aspnet/AspNetCore-Tooling - dab77485d72ed4e533c8cdd0267fa834fe894b6d + 4aa61a13b2a50b9849c3828d8b048dfb9861111f - + https://github.com/aspnet/AspNetCore-Tooling - dab77485d72ed4e533c8cdd0267fa834fe894b6d + 4aa61a13b2a50b9849c3828d8b048dfb9861111f - + https://github.com/aspnet/AspNetCore-Tooling - dab77485d72ed4e533c8cdd0267fa834fe894b6d + 4aa61a13b2a50b9849c3828d8b048dfb9861111f - + https://github.com/aspnet/EntityFrameworkCore - 0da39bba933d60b3475ea2899d9d5d43657882c7 + 06d8ad53f58f1c449b3d6036ecad13cdb887ef72 - + https://github.com/aspnet/EntityFrameworkCore - 0da39bba933d60b3475ea2899d9d5d43657882c7 + 06d8ad53f58f1c449b3d6036ecad13cdb887ef72 - + https://github.com/aspnet/EntityFrameworkCore - 0da39bba933d60b3475ea2899d9d5d43657882c7 + 06d8ad53f58f1c449b3d6036ecad13cdb887ef72 - + https://github.com/aspnet/EntityFrameworkCore - 0da39bba933d60b3475ea2899d9d5d43657882c7 + 06d8ad53f58f1c449b3d6036ecad13cdb887ef72 - + https://github.com/aspnet/EntityFrameworkCore - 0da39bba933d60b3475ea2899d9d5d43657882c7 + 06d8ad53f58f1c449b3d6036ecad13cdb887ef72 - + https://github.com/aspnet/EntityFrameworkCore - 0da39bba933d60b3475ea2899d9d5d43657882c7 + 06d8ad53f58f1c449b3d6036ecad13cdb887ef72 - + https://github.com/aspnet/EntityFrameworkCore - 0da39bba933d60b3475ea2899d9d5d43657882c7 + 06d8ad53f58f1c449b3d6036ecad13cdb887ef72 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 https://github.com/dotnet/corefx @@ -381,25 +381,25 @@ https://github.com/dotnet/corefx d341fd37dcb2c22e382adccdc06770cf8f160577 - + https://github.com/dotnet/core-setup - 1c0f7e38cc371a298353a459c53138f23ba40a2a + 0175edb2b0d0c5f541560f4056bb7633d1445688 - + https://github.com/dotnet/core-setup - 1c0f7e38cc371a298353a459c53138f23ba40a2a + 0175edb2b0d0c5f541560f4056bb7633d1445688 - + https://github.com/dotnet/core-setup - 1c0f7e38cc371a298353a459c53138f23ba40a2a + 0175edb2b0d0c5f541560f4056bb7633d1445688 - + https://github.com/dotnet/core-setup - 1c0f7e38cc371a298353a459c53138f23ba40a2a + 0175edb2b0d0c5f541560f4056bb7633d1445688 @@ -408,9 +408,9 @@ https://github.com/dotnet/corefx d341fd37dcb2c22e382adccdc06770cf8f160577 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 https://github.com/dotnet/arcade @@ -424,13 +424,13 @@ https://github.com/dotnet/arcade 2de3acc671fc624191672a45564f9ef130af5cd4 - + https://github.com/aspnet/Extensions - 1983ee879cc4d8e7922b0af8fba82fca2739c3c4 + 9b9a6d47dba7a965a94fd38e67a298cfc6d2b813 - + https://github.com/dotnet/roslyn - c82648d8964d1e683f92b7daa91beef2fdc5fb72 + 4d9190ea3daac1ccf7a92aa4e0a169ab29ca8f9f diff --git a/eng/Versions.props b/eng/Versions.props index 9c0d5d0590..a3b1623e29 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -55,12 +55,12 @@ 1.0.0-beta.19425.1 - 3.3.1-beta3-19428-02 + 3.3.1-beta3-19429-03 - 3.0.0-rc1-19427-13 - 3.0.0-rc1-19427-13 - 3.0.0-rc1-19427-13 - 2.1.0-rc1-19427-13 + 3.0.0-rc1-19428-14 + 3.0.0-rc1-19428-14 + 3.0.0-rc1-19428-14 + 2.1.0-rc1-19428-14 1.0.0-rc1.19420.10 4.6.0-rc1.19420.10 @@ -89,80 +89,80 @@ 3.0.0-preview9.19426.1 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 - 3.0.0-rc1.19428.4 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 + 3.0.0-rc1.19429.5 - 3.0.0-rc1.19428.6 - 3.0.0-rc1.19428.6 - 3.0.0-rc1.19428.6 - 3.0.0-rc1.19428.6 - 3.0.0-rc1.19428.6 - 3.0.0-rc1.19428.6 - 3.0.0-rc1.19428.6 + 3.0.0-rc1.19429.10 + 3.0.0-rc1.19429.10 + 3.0.0-rc1.19429.10 + 3.0.0-rc1.19429.10 + 3.0.0-rc1.19429.10 + 3.0.0-rc1.19429.10 + 3.0.0-rc1.19429.10 - 3.0.0-rc1.19428.6 - 3.0.0-rc1.19428.6 - 3.0.0-rc1.19428.6 - 3.0.0-rc1.19428.6 + 3.0.0-rc1.19429.8 + 3.0.0-rc1.19429.8 + 3.0.0-rc1.19429.8 + 3.0.0-rc1.19429.8 diff --git a/src/Components/Components/ref/Microsoft.AspNetCore.Components.netstandard2.0.Manual.cs b/src/Components/Components/ref/Microsoft.AspNetCore.Components.netstandard2.0.Manual.cs index ed14f101cd..0f6b699935 100644 --- a/src/Components/Components/ref/Microsoft.AspNetCore.Components.netstandard2.0.Manual.cs +++ b/src/Components/Components/ref/Microsoft.AspNetCore.Components.netstandard2.0.Manual.cs @@ -1,47 +1,58 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +using System; +using System.Runtime.InteropServices; +using Microsoft.AspNetCore.Components.Rendering; + namespace Microsoft.AspNetCore.Components.RenderTree { // https://github.com/dotnet/arcade/pull/2033 - [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Explicit)] + [StructLayout(LayoutKind.Explicit, Pack = 4)] public readonly partial struct RenderTreeFrame { - [System.Runtime.InteropServices.FieldOffsetAttribute(8)] - public readonly int AttributeEventHandlerId; - [System.Runtime.InteropServices.FieldOffsetAttribute(16)] - public readonly string AttributeName; - [System.Runtime.InteropServices.FieldOffsetAttribute(24)] - public readonly object AttributeValue; - [System.Runtime.InteropServices.FieldOffsetAttribute(12)] - public readonly int ComponentId; - [System.Runtime.InteropServices.FieldOffsetAttribute(16)] - public readonly System.Action ComponentReferenceCaptureAction; - [System.Runtime.InteropServices.FieldOffsetAttribute(8)] - public readonly int ComponentReferenceCaptureParentFrameIndex; - [System.Runtime.InteropServices.FieldOffsetAttribute(8)] - public readonly int ComponentSubtreeLength; - [System.Runtime.InteropServices.FieldOffsetAttribute(16)] - public readonly System.Type ComponentType; - [System.Runtime.InteropServices.FieldOffsetAttribute(16)] - public readonly string ElementName; - [System.Runtime.InteropServices.FieldOffsetAttribute(24)] - public readonly System.Action ElementReferenceCaptureAction; - [System.Runtime.InteropServices.FieldOffsetAttribute(16)] - public readonly string ElementReferenceCaptureId; - [System.Runtime.InteropServices.FieldOffsetAttribute(8)] - public readonly int ElementSubtreeLength; - [System.Runtime.InteropServices.FieldOffsetAttribute(4)] - public readonly Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType FrameType; - [System.Runtime.InteropServices.FieldOffsetAttribute(16)] - public readonly string MarkupContent; - [System.Runtime.InteropServices.FieldOffsetAttribute(8)] - public readonly int RegionSubtreeLength; - [System.Runtime.InteropServices.FieldOffsetAttribute(0)] - public readonly int Sequence; - [System.Runtime.InteropServices.FieldOffsetAttribute(16)] - public readonly string TextContent; - public Microsoft.AspNetCore.Components.IComponent Component { get { throw null; } } - public override string ToString() { throw null; } + [FieldOffset(0)] public readonly int Sequence; + + [FieldOffset(4)] public readonly RenderTreeFrameType FrameType; + + [FieldOffset(8)] public readonly int ElementSubtreeLength; + + [FieldOffset(16)] public readonly string ElementName; + + [FieldOffset(24)] public readonly object ElementKey; + + [FieldOffset(16)] public readonly string TextContent; + + [FieldOffset(8)] public readonly ulong AttributeEventHandlerId; + + [FieldOffset(16)] public readonly string AttributeName; + + [FieldOffset(24)] public readonly object AttributeValue; + + [FieldOffset(32)] public readonly string AttributeEventUpdatesAttributeName; + + [FieldOffset(8)] public readonly int ComponentSubtreeLength; + + [FieldOffset(12)] public readonly int ComponentId; + + [FieldOffset(16)] public readonly Type ComponentType; + + [FieldOffset(32)] public readonly object ComponentKey; + + public IComponent Component => null; + + [FieldOffset(8)] public readonly int RegionSubtreeLength; + + [FieldOffset(16)] public readonly string ElementReferenceCaptureId; + + [FieldOffset(24)] public readonly Action ElementReferenceCaptureAction; + + [FieldOffset(8)] public readonly int ComponentReferenceCaptureParentFrameIndex; + + [FieldOffset(16)] public readonly Action ComponentReferenceCaptureAction; + + [FieldOffset(16)] public readonly string MarkupContent; + + public override string ToString() => null; } } diff --git a/src/Middleware/HttpsPolicy/src/HttpsRedirectionMiddleware.cs b/src/Middleware/HttpsPolicy/src/HttpsRedirectionMiddleware.cs index 1e860a0e87..021a030e17 100644 --- a/src/Middleware/HttpsPolicy/src/HttpsRedirectionMiddleware.cs +++ b/src/Middleware/HttpsPolicy/src/HttpsRedirectionMiddleware.cs @@ -1,4 +1,4 @@ -// Copyright (c) .NET Foundation. All rights reserved. +// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; @@ -15,9 +15,10 @@ namespace Microsoft.AspNetCore.HttpsPolicy { public class HttpsRedirectionMiddleware { + private const int PortNotFound = -1; + private readonly RequestDelegate _next; - private bool _portEvaluated = false; - private int? _httpsPort; + private readonly Lazy _httpsPort; private readonly int _statusCode; private readonly IServerAddressesFeature _serverAddressesFeature; @@ -42,8 +43,14 @@ namespace Microsoft.AspNetCore.HttpsPolicy throw new ArgumentNullException(nameof(options)); } var httpsRedirectionOptions = options.Value; - _httpsPort = httpsRedirectionOptions.HttpsPort; - _portEvaluated = _httpsPort.HasValue; + if (httpsRedirectionOptions.HttpsPort.HasValue) + { + _httpsPort = new Lazy(() => httpsRedirectionOptions.HttpsPort.Value); + } + else + { + _httpsPort = new Lazy(TryGetHttpsPort); + } _statusCode = httpsRedirectionOptions.RedirectStatusCode; _logger = loggerFactory.CreateLogger(); } @@ -70,7 +77,13 @@ namespace Microsoft.AspNetCore.HttpsPolicy /// public Task Invoke(HttpContext context) { - if (context.Request.IsHttps || !TryGetHttpsPort(out var port)) + if (context.Request.IsHttps) + { + return _next(context); + } + + var port = _httpsPort.Value; + if (port == PortNotFound) { return _next(context); } @@ -101,7 +114,8 @@ namespace Microsoft.AspNetCore.HttpsPolicy return Task.CompletedTask; } - private bool TryGetHttpsPort(out int port) + // Returns PortNotFound (-1) if we were unable to determine the port. + private int TryGetHttpsPort() { // The IServerAddressesFeature will not be ready until the middleware is Invoked, // Order for finding the HTTPS port: @@ -109,59 +123,47 @@ namespace Microsoft.AspNetCore.HttpsPolicy // 2. HTTPS_PORT environment variable // 3. IServerAddressesFeature // 4. Fail if not set - - port = -1; - - if (_portEvaluated) + var nullablePort = _config.GetValue("HTTPS_PORT"); + if (nullablePort.HasValue) { - port = _httpsPort ?? port; - return _httpsPort.HasValue; - } - _portEvaluated = true; - - _httpsPort = _config.GetValue("HTTPS_PORT"); - if (_httpsPort.HasValue) - { - port = _httpsPort.Value; + var port = nullablePort.Value; _logger.PortLoadedFromConfig(port); - return true; + return port; } if (_serverAddressesFeature == null) { _logger.FailedToDeterminePort(); - return false; + return PortNotFound; } - int? httpsPort = null; foreach (var address in _serverAddressesFeature.Addresses) { var bindingAddress = BindingAddress.Parse(address); if (bindingAddress.Scheme.Equals("https", StringComparison.OrdinalIgnoreCase)) { // If we find multiple different https ports specified, throw - if (httpsPort.HasValue && httpsPort != bindingAddress.Port) + if (nullablePort.HasValue && nullablePort != bindingAddress.Port) { _logger.FailedMultiplePorts(); - return false; + return PortNotFound; } else { - httpsPort = bindingAddress.Port; + nullablePort = bindingAddress.Port; } } } - if (httpsPort.HasValue) + if (nullablePort.HasValue) { - _httpsPort = httpsPort; - port = _httpsPort.Value; + var port = nullablePort.Value; _logger.PortFromServer(port); - return true; + return port; } _logger.FailedToDeterminePort(); - return false; + return PortNotFound; } } } diff --git a/src/Servers/Kestrel/Core/test/ConcurrentPipeWriterTests.cs b/src/Servers/Kestrel/Core/test/ConcurrentPipeWriterTests.cs index b76c887a44..645f0538f9 100644 --- a/src/Servers/Kestrel/Core/test/ConcurrentPipeWriterTests.cs +++ b/src/Servers/Kestrel/Core/test/ConcurrentPipeWriterTests.cs @@ -24,39 +24,54 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously), }; + var sync = new object(); var mockPipeWriter = new MockPipeWriter(pipeWriterFlushTcsArray); + var concurrentPipeWriter = new ConcurrentPipeWriter(mockPipeWriter, diagnosticPool, sync); - // No need to pass in a real sync object since all the calls in this test are passthrough. - var concurrentPipeWriter = new ConcurrentPipeWriter(mockPipeWriter, diagnosticPool, new object()); + ValueTask flushTask; - var memory = concurrentPipeWriter.GetMemory(); - Assert.Equal(1, mockPipeWriter.GetMemoryCallCount); + lock (sync) + { + var memory = concurrentPipeWriter.GetMemory(); + Assert.Equal(1, mockPipeWriter.GetMemoryCallCount); - concurrentPipeWriter.Advance(memory.Length); - Assert.Equal(1, mockPipeWriter.AdvanceCallCount); + concurrentPipeWriter.Advance(memory.Length); + Assert.Equal(1, mockPipeWriter.AdvanceCallCount); - var flushTask0 = concurrentPipeWriter.FlushAsync(); - Assert.Equal(1, mockPipeWriter.FlushCallCount); + flushTask = concurrentPipeWriter.FlushAsync(); + Assert.Equal(1, mockPipeWriter.FlushCallCount); - pipeWriterFlushTcsArray[0].SetResult(default); + pipeWriterFlushTcsArray[0].SetResult(default); + } - await flushTask0.DefaultTimeout(); + await flushTask.DefaultTimeout(); - memory = concurrentPipeWriter.GetMemory(); - Assert.Equal(2, mockPipeWriter.GetMemoryCallCount); + lock (sync) + { + var memory = concurrentPipeWriter.GetMemory(); + Assert.Equal(2, mockPipeWriter.GetMemoryCallCount); - concurrentPipeWriter.Advance(memory.Length); - Assert.Equal(2, mockPipeWriter.AdvanceCallCount); + concurrentPipeWriter.Advance(memory.Length); + Assert.Equal(2, mockPipeWriter.AdvanceCallCount); - var flushTask1 = concurrentPipeWriter.FlushAsync(); - Assert.Equal(2, mockPipeWriter.FlushCallCount); + flushTask = concurrentPipeWriter.FlushAsync(); + Assert.Equal(2, mockPipeWriter.FlushCallCount); - pipeWriterFlushTcsArray[1].SetResult(default); + pipeWriterFlushTcsArray[1].SetResult(default); + } - await flushTask1.DefaultTimeout(); + await flushTask.DefaultTimeout(); var completeEx = new Exception(); - await concurrentPipeWriter.CompleteAsync(completeEx).DefaultTimeout(); + ValueTask completeTask; + + lock (sync) + { + completeTask = concurrentPipeWriter.CompleteAsync(completeEx); + } + + await completeTask.DefaultTimeout(); + Assert.Same(completeEx, mockPipeWriter.CompleteException); } }