diff --git a/.azure/pipelines/ci.yml b/.azure/pipelines/ci.yml
index cc205852e6..f0a760d1f1 100644
--- a/.azure/pipelines/ci.yml
+++ b/.azure/pipelines/ci.yml
@@ -303,15 +303,10 @@ jobs:
displayName: Install SQL Server 2016 Express LocalDB
- powershell: "& ./src/Servers/IIS/tools/UpdateIISExpressCertificate.ps1; & ./src/Servers/IIS/tools/update_schema.ps1"
displayName: Setup IISExpress test certificates and schema
- - powershell: "& ./.azure/pipelines/tools/SetupTestEnvironment.ps1 Setup signalrclienttests.exe"
- displayName: Start AppVerifier
afterBuild:
- powershell: "& ./build.ps1 -CI -NoBuild -Test /p:RunFlakyTests=true"
displayName: Run Flaky Tests
continueOnError: true
- - powershell: "& ./.azure/pipelines/tools/SetupTestEnvironment.ps1 Shutdown signalrclienttests.exe"
- displayName: Stop AppVerifier
- condition: always()
artifacts:
- name: Windows_Test_Logs
path: artifacts/logs/
diff --git a/.azure/pipelines/jobs/default-build.yml b/.azure/pipelines/jobs/default-build.yml
index 5b78c082ca..2c8d2ea0fc 100644
--- a/.azure/pipelines/jobs/default-build.yml
+++ b/.azure/pipelines/jobs/default-build.yml
@@ -189,13 +189,21 @@ jobs:
buildConfiguration: $(BuildConfiguration)
buildPlatform: $(AgentOsName)
- task: PublishTestResults@2
- displayName: Publish junit test results
+ displayName: Publish js test results
condition: always()
inputs:
testRunner: junit
testResultsFiles: '**/artifacts/logs/**/*.junit.xml'
buildConfiguration: $(BuildConfiguration)
buildPlatform: $(AgentOsName)
+ - task: PublishTestResults@2
+ displayName: Publish Java test results
+ condition: always()
+ inputs:
+ testRunner: junit
+ testResultsFiles: '**/TEST-com.microsoft.signalr*.xml'
+ buildConfiguration: $(BuildConfiguration)
+ buildPlatform: $(AgentOsName)
- ${{ each artifact in parameters.artifacts }}:
- task: PublishBuildArtifacts@1
displayName: Upload artifacts from ${{ artifact.path }}
diff --git a/.azure/pipelines/signalr-daily-tests.yml b/.azure/pipelines/signalr-daily-tests.yml
index 3269b2657a..2e74597f73 100644
--- a/.azure/pipelines/signalr-daily-tests.yml
+++ b/.azure/pipelines/signalr-daily-tests.yml
@@ -14,11 +14,4 @@ jobs:
agentOs: Windows
jobName: SignalRDailyTests
jobDisplayName: "SignalR Daily Tests"
- beforeBuild:
- - powershell: "& ./.azure/pipelines/tools/SetupTestEnvironment.ps1 Setup signalrclienttests.exe"
- displayName: Start AppVerifier
- afterBuild:
- - powershell: "& ./.azure/pipelines/tools/SetupTestEnvironment.ps1 Shutdown signalrclienttests.exe"
- displayName: Stop AppVerifier
- condition: always()
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index c4e6085b10..719f153297 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -1,18 +1,18 @@
# Users referenced in this file will automatically be requested as reviewers for PRs that modify the given paths.
# See https://help.github.com/articles/about-code-owners/
-/.azure/ @dougbu
-/.config/ @dougbu
-/build/ @dougbu
-/eng/ @dougbu
-/src/Components/ @SteveSandersonMS
-/src/DefaultBuilder/ @tratcher @anurse
-/src/Hosting/ @tratcher @anurse
-/src/Http/ @tratcher @jkotalik @anurse
-/src/Middleware/ @tratcher @anurse
-/src/ProjectTemplates/ @ryanbrandenburg
-/src/Security/ @tratcher @anurse
-/src/Servers/ @tratcher @jkotalik @anurse
-/src/Middleware/Rewrite @jkotalik @anurse
-/src/Middleware/HttpsPolicy @jkotalik @anurse
-/src/SignalR/ @mikaelm12 @BrennanConroy @halter73 @anurse
+/.azure/ @aspnet/build
+/.config/ @aspnet/build
+/build/ @aspnet/build
+/eng/ @aspnet/build
+/src/Components/ @SteveSandersonMS
+/src/DefaultBuilder/ @tratcher @anurse
+/src/Hosting/ @tratcher @anurse
+/src/Http/ @tratcher @jkotalik @anurse
+/src/Middleware/ @tratcher @anurse
+/src/ProjectTemplates/ @ryanbrandenburg
+/src/Security/ @tratcher @anurse
+/src/Servers/ @tratcher @jkotalik @anurse
+/src/Middleware/Rewrite @jkotalik @anurse
+/src/Middleware/HttpsPolicy @jkotalik @anurse
+/src/SignalR/ @mikaelm12 @BrennanConroy @halter73 @anurse
diff --git a/Directory.Build.targets b/Directory.Build.targets
index efafc9f288..e90a905671 100644
--- a/Directory.Build.targets
+++ b/Directory.Build.targets
@@ -98,6 +98,35 @@
+
+
+
+
+
+
+ <_Pattern>(https://dnceng%40dev\.azure\.com/dnceng/internal/_git|https://dev\.azure\.com/dnceng/internal/_git|https://dnceng\.visualstudio\.com/internal/_git|dnceng%40vs-ssh\.visualstudio\.com:v3/dnceng/internal|git%40ssh\.dev\.azure\.com:v3/dnceng/internal)/([^/-]+)-(.+)
+ <_Replacement>https://github.com/$2/$3
+
+
+
+ $([System.Text.RegularExpressions.Regex]::Replace($(ScmRepositoryUrl), $(_Pattern), $(_Replacement)))
+
+
+
+
+ $([System.Text.RegularExpressions.Regex]::Replace(%(SourceRoot.ScmRepositoryUrl), $(_Pattern), $(_Replacement)))
+
+
+
+
diff --git a/build/repo.props b/build/repo.props
index f453c3c5c8..1452299ad8 100644
--- a/build/repo.props
+++ b/build/repo.props
@@ -54,8 +54,6 @@
$(RepositoryRoot)src\Tools\dotnet-watch\test\TestProjects\**\*.csproj;
$(RepositoryRoot)src\Razor\Razor.Design\test\testassets\**\*.*proj;
$(RepositoryRoot)src\submodules\**\*.*proj;
- $(RepositoryRoot)src\SignalR\clients\cpp\samples\**\*.*proj;
- $(RepositoryRoot)src\SignalR\clients\cpp\test\signalrclient-testhost\**\*.*proj;
$(RepositoryRoot)src\Installers\**\*.*proj;
$(RepositoryRoot)src\SignalR\clients\ts\**\node_modules\**\*.*proj;
$(RepositoryRoot)src\Components\Blazor\Templates\src\content\**\*.*proj;
diff --git a/build/sources.props b/build/sources.props
index 717242fc60..29a3b61a6d 100644
--- a/build/sources.props
+++ b/build/sources.props
@@ -20,6 +20,7 @@
https://dotnet.myget.org/F/aspnetcore-tools/api/v3/index.json;
https://dotnet.myget.org/F/blazor-dev/api/v3/index.json;
https://dotnet.myget.org/F/dotnet-core/api/v3/index.json;
+ https://dotnet.myget.org/F/nuget-build/api/v3/index.json;
https://dotnet.myget.org/F/roslyn-tools/api/v3/index.json;
https://dotnet.myget.org/F/roslyn/api/v3/index.json;
https://vside.myget.org/F/devcore/api/v3/index.json;
diff --git a/build/tasks/RepoTasks.csproj b/build/tasks/RepoTasks.csproj
index 8615952bb7..cee6fea25f 100644
--- a/build/tasks/RepoTasks.csproj
+++ b/build/tasks/RepoTasks.csproj
@@ -12,7 +12,7 @@
-
+
diff --git a/docs/BuildErrors.md b/docs/BuildErrors.md
new file mode 100644
index 0000000000..be5f94a560
--- /dev/null
+++ b/docs/BuildErrors.md
@@ -0,0 +1,17 @@
+Build Errors
+------------
+
+This document is for common build errors and how to resolve them.
+
+### Warning BUILD001
+
+> warning BUILD001: Package references changed since the last release...
+
+This warning indicates a breaking change might have been made to a package or assembly due to the removal of a reference which was used
+in a previous release of this assembly. See <./ReferenceResolution.md> for how to suppress.
+
+### Error BUILD002
+
+> error BUILD002: Package references changed since the last release...
+
+Similar to BUILD001, but this error is not suppressable. This error only appears in servicing builds, which should not change references between assemblies or packages.
diff --git a/docs/BuildFromSource.md b/docs/BuildFromSource.md
index 6d3f6631d4..765a062dad 100644
--- a/docs/BuildFromSource.md
+++ b/docs/BuildFromSource.md
@@ -19,9 +19,8 @@ Building ASP.NET Core on Windows requires:
PS> ./eng/scripts/InstallVisualStudio.ps1
```
* Git.
-* (Optional) some optional components, like the SignalR Java client, may require
- * NodeJS. LTS version of 10.14.2 or newer recommended
- * Java Development Kit (JDK) v8 with Java Runtime Environment (JRE) v8. See https://www.oracle.com/technetwork/java/javase/downloads/index.html
+* NodeJS. LTS version of 10.14.2 or newer
+* Java Development Kit (JDK) v8 with Java Runtime Environment (JRE) v8. See https://www.oracle.com/technetwork/java/javase/downloads/index.html
### macOS/Linux
@@ -31,11 +30,10 @@ Building ASP.NET Core on macOS or Linux requires:
* If using Linux, you need a machine with all .NET Core Linux prerequisites:
* At least 10 GB of disk space and a good internet connection (our build scripts download a lot of tools and dependencies)
* Git
-* (Optional) some optional components, like the SignalR Java client, may require
- * NodeJS. LTS version of 10.14.2 or newer recommended
- * Java Development Kit 10 or newer. Either:
- * OpenJDK
- * Oracle's JDK
+* NodeJS. LTS version of 10.14.2 or newer
+* Java Development Kit 10 or newer. Either:
+ * OpenJDK
+ * Oracle's JDK
## Clone the source code
diff --git a/docs/DailyBuilds.md b/docs/DailyBuilds.md
index d41e64772d..08ff052f20 100644
--- a/docs/DailyBuilds.md
+++ b/docs/DailyBuilds.md
@@ -14,6 +14,10 @@ If you want to download the latest daily build and use it in a project, then you
+
+
+
+
@@ -23,3 +27,10 @@ If you want to download the latest daily build and use it in a project, then you
Some features, such as new target frameworks, may require prerelease tooling builds for Visual Studio.
These are available in the [Visual Studio Preview](https://www.visualstudio.com/vs/preview/).
+
+#### To debug daily builds using Visual Studio
+
+* *Enable Source Link support* in Visual Studio should be enabled.
+* *Enable source server support* in Visual should be enabled.
+* *Enable Just My Code* should be disabled
+* Add https://dotnet.myget.org/F/aspnetcore-dev/symbols to the list of symbol servers in the Visual Studio Debugging options
diff --git a/docs/ReferenceResolution.md b/docs/ReferenceResolution.md
index 4acb23b2b8..7d1e20c0cc 100644
--- a/docs/ReferenceResolution.md
+++ b/docs/ReferenceResolution.md
@@ -25,6 +25,7 @@ The requirements that led to this system are:
* Name the .csproj file to match the assembly name.
* Run `build.cmd /t:GenerateProjectList` when adding new projects
* Use [eng/tools/BaseLineGenerator/](/eng/tools/BaselineGenerator/README.md) if you need to update baselines.
+* If you need to make a breaking change to dependencies, you may need to add ``.
## Important files
@@ -67,3 +68,16 @@ Steps for adding a new package dependency to an existing project. Let's say I'm
If you don't know the commit hash of the source code used to produce "0.0.1-beta-1", you can use `000000` as a placeholder for `Sha`
as its value is unimportant and will be updated the next time the bot runs.
+
+## Example: make a breaking change to references
+
+If Microsoft.AspNetCore.Banana in 2.1 had a reference to `Microsoft.AspNetCore.Orange`, but in 3.0 this reference is changing to `Microsoft.AspNetCore.BetterThanOrange`, you would need to make these changes to the .csproj file
+
+```diff
+
+
+-
++
++
+
+```
diff --git a/eng/Baseline.Designer.props b/eng/Baseline.Designer.props
index 42f13a684a..d8730cc347 100644
--- a/eng/Baseline.Designer.props
+++ b/eng/Baseline.Designer.props
@@ -2,7 +2,7 @@
$(MSBuildAllProjects);$(MSBuildThisFileFullPath)
- 2.2.3
+ 2.2.4
@@ -81,7 +81,7 @@
- 2.2.2
+ 2.2.4
diff --git a/eng/Baseline.xml b/eng/Baseline.xml
index aea4789e6c..c9ebacb3b9 100644
--- a/eng/Baseline.xml
+++ b/eng/Baseline.xml
@@ -4,7 +4,7 @@ This file contains a list of all the packages and their versions which were rele
build of ASP.NET Core 2.2.x. Update this list when preparing for a new patch.
-->
-
+
@@ -13,7 +13,7 @@ build of ASP.NET Core 2.2.x. Update this list when preparing for a new patch.
-
+
diff --git a/eng/PatchConfig.props b/eng/PatchConfig.props
index 1b7c23f977..c44676b170 100644
--- a/eng/PatchConfig.props
+++ b/eng/PatchConfig.props
@@ -36,6 +36,15 @@ Later on, this will be checked using this condition:
@aspnet/signalr;
+ Microsoft.AspNetCore.AspNetCoreModuleV2;
+
+
+ Microsoft.AspNetCore.AspNetCoreModule;
+ Microsoft.AspNetCore.AspNetCoreModuleV2;
+ java:signalr;
+
+
+
diff --git a/eng/ProjectReferences.props b/eng/ProjectReferences.props
index 098333666e..60692756fa 100644
--- a/eng/ProjectReferences.props
+++ b/eng/ProjectReferences.props
@@ -119,6 +119,7 @@
+
diff --git a/eng/SharedFramework.Local.props b/eng/SharedFramework.Local.props
index 4a27b6b0d5..e61c6e5a85 100644
--- a/eng/SharedFramework.Local.props
+++ b/eng/SharedFramework.Local.props
@@ -11,6 +11,7 @@
+
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 04ff079b8f..c11a087891 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -9,384 +9,384 @@
-->
-
+
https://github.com/aspnet/AspNetCore-Tooling
- 5ec5b0c8894e758ef2a41fd534746500bbcf00ad
+ d4ef2a1d4a68428e29a86cafc24837a45aef7e0d
-
+
https://github.com/aspnet/AspNetCore-Tooling
- 5ec5b0c8894e758ef2a41fd534746500bbcf00ad
+ d4ef2a1d4a68428e29a86cafc24837a45aef7e0d
-
+
https://github.com/aspnet/AspNetCore-Tooling
- 5ec5b0c8894e758ef2a41fd534746500bbcf00ad
+ d4ef2a1d4a68428e29a86cafc24837a45aef7e0d
-
+
https://github.com/aspnet/AspNetCore-Tooling
- 5ec5b0c8894e758ef2a41fd534746500bbcf00ad
+ d4ef2a1d4a68428e29a86cafc24837a45aef7e0d
-
+
https://github.com/aspnet/EntityFrameworkCore
- a4d2bafcdfaf0ed6b451056b7d9d75f53ee8c4df
+ b191c93d850ff31445534eb5cd6184599f40bbb4
-
+
https://github.com/aspnet/EntityFrameworkCore
- a4d2bafcdfaf0ed6b451056b7d9d75f53ee8c4df
+ b191c93d850ff31445534eb5cd6184599f40bbb4
-
+
https://github.com/aspnet/EntityFrameworkCore
- a4d2bafcdfaf0ed6b451056b7d9d75f53ee8c4df
+ b191c93d850ff31445534eb5cd6184599f40bbb4
-
+
https://github.com/aspnet/EntityFrameworkCore
- a4d2bafcdfaf0ed6b451056b7d9d75f53ee8c4df
+ b191c93d850ff31445534eb5cd6184599f40bbb4
-
+
https://github.com/aspnet/EntityFrameworkCore
- a4d2bafcdfaf0ed6b451056b7d9d75f53ee8c4df
+ b191c93d850ff31445534eb5cd6184599f40bbb4
-
+
https://github.com/aspnet/EntityFrameworkCore
- a4d2bafcdfaf0ed6b451056b7d9d75f53ee8c4df
+ b191c93d850ff31445534eb5cd6184599f40bbb4
-
+
https://github.com/aspnet/EntityFrameworkCore
- a4d2bafcdfaf0ed6b451056b7d9d75f53ee8c4df
+ b191c93d850ff31445534eb5cd6184599f40bbb4
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/dotnet/corefx
- dc522ef97fac72e64cd74825b7ef497f82af4624
+ fe5c12ad8315e043e62285117a56bba1784756d1
-
+
https://github.com/dotnet/corefx
- dc522ef97fac72e64cd74825b7ef497f82af4624
+ fe5c12ad8315e043e62285117a56bba1784756d1
-
+
https://github.com/dotnet/corefx
- dc522ef97fac72e64cd74825b7ef497f82af4624
+ fe5c12ad8315e043e62285117a56bba1784756d1
-
+
https://github.com/dotnet/corefx
- dc522ef97fac72e64cd74825b7ef497f82af4624
+ fe5c12ad8315e043e62285117a56bba1784756d1
-
+
https://github.com/dotnet/corefx
- dc522ef97fac72e64cd74825b7ef497f82af4624
+ fe5c12ad8315e043e62285117a56bba1784756d1
-
+
https://github.com/dotnet/corefx
- dc522ef97fac72e64cd74825b7ef497f82af4624
+ fe5c12ad8315e043e62285117a56bba1784756d1
-
+
https://github.com/dotnet/corefx
- dc522ef97fac72e64cd74825b7ef497f82af4624
+ fe5c12ad8315e043e62285117a56bba1784756d1
-
+
https://github.com/dotnet/corefx
- dc522ef97fac72e64cd74825b7ef497f82af4624
+ fe5c12ad8315e043e62285117a56bba1784756d1
-
+
https://github.com/dotnet/corefx
- dc522ef97fac72e64cd74825b7ef497f82af4624
+ fe5c12ad8315e043e62285117a56bba1784756d1
-
+
https://github.com/dotnet/corefx
- dc522ef97fac72e64cd74825b7ef497f82af4624
+ fe5c12ad8315e043e62285117a56bba1784756d1
-
+
https://github.com/dotnet/corefx
- dc522ef97fac72e64cd74825b7ef497f82af4624
+ fe5c12ad8315e043e62285117a56bba1784756d1
-
+
https://github.com/dotnet/corefx
- dc522ef97fac72e64cd74825b7ef497f82af4624
+ fe5c12ad8315e043e62285117a56bba1784756d1
-
+
https://github.com/dotnet/corefx
- dc522ef97fac72e64cd74825b7ef497f82af4624
+ fe5c12ad8315e043e62285117a56bba1784756d1
-
+
https://github.com/dotnet/corefx
- dc522ef97fac72e64cd74825b7ef497f82af4624
+ fe5c12ad8315e043e62285117a56bba1784756d1
-
+
https://github.com/dotnet/corefx
- dc522ef97fac72e64cd74825b7ef497f82af4624
+ fe5c12ad8315e043e62285117a56bba1784756d1
-
+
https://github.com/dotnet/corefx
- dc522ef97fac72e64cd74825b7ef497f82af4624
+ fe5c12ad8315e043e62285117a56bba1784756d1
-
+
https://github.com/dotnet/corefx
- dc522ef97fac72e64cd74825b7ef497f82af4624
+ fe5c12ad8315e043e62285117a56bba1784756d1
-
+
https://github.com/dotnet/corefx
- dc522ef97fac72e64cd74825b7ef497f82af4624
+ fe5c12ad8315e043e62285117a56bba1784756d1
-
+
https://github.com/dotnet/corefx
- dc522ef97fac72e64cd74825b7ef497f82af4624
+ fe5c12ad8315e043e62285117a56bba1784756d1
-
+
https://github.com/dotnet/core-setup
- ee54d4cbd2b305eadf6f341bdc9d4abccdb50559
+ b159f4bf9614203a0c60a20f5469d5226f3f12e7
-
+
https://github.com/dotnet/core-setup
- ee54d4cbd2b305eadf6f341bdc9d4abccdb50559
+ b159f4bf9614203a0c60a20f5469d5226f3f12e7
-
+
https://github.com/dotnet/corefx
- dc522ef97fac72e64cd74825b7ef497f82af4624
+ fe5c12ad8315e043e62285117a56bba1784756d1
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
-
+
https://github.com/dotnet/arcade
- b1f9e12fe3ee71c48ea60b15968745850ac0a4a7
+ 517bf671ea342965d007aa48f5bfd4926e58d582
-
+
https://github.com/aspnet/Extensions
- fd0366daae4c9d47eba72ea6034002cbd7492018
+ 0b1aa473a7a722cd3f0aab5166fbe9e5203f0582
diff --git a/eng/Versions.props b/eng/Versions.props
index e2f1cd6122..332e0bbefe 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -17,106 +17,106 @@
-->
- 1.0.0-beta.19207.1
+ 1.0.0-beta.19215.12
- 3.0.0-preview4-27615-11
- 3.0.0-preview4-27615-11
+ 3.0.0-preview5-27611-18
+ 3.0.0-preview5-27611-18
- 4.6.0-preview4.19212.13
- 4.6.0-preview4.19212.13
- 4.6.0-preview4.19212.13
- 4.6.0-preview4.19212.13
- 4.7.0-preview4.19212.13
- 4.6.0-preview4.19212.13
- 4.6.0-preview4.19212.13
- 4.6.0-preview4.19212.13
- 4.6.0-preview4.19212.13
- 1.7.0-preview4.19212.13
- 4.6.0-preview4.19212.13
- 4.6.0-preview4.19212.13
- 4.6.0-preview4.19212.13
- 4.6.0-preview4.19212.13
- 4.6.0-preview4.19212.13
- 4.6.0-preview4.19212.13
- 4.6.0-preview4.19212.13
- 4.6.0-preview4.19212.13
- 4.6.0-preview4.19212.13
+ 4.6.0-preview5.19211.22
+ 4.6.0-preview5.19211.22
+ 4.6.0-preview5.19211.22
+ 4.6.0-preview5.19211.22
+ 4.7.0-preview5.19211.22
+ 4.6.0-preview5.19211.22
+ 4.6.0-preview5.19211.22
+ 4.6.0-preview5.19211.22
+ 4.6.0-preview5.19211.22
+ 1.7.0-preview5.19211.22
+ 4.6.0-preview5.19211.22
+ 4.6.0-preview5.19211.22
+ 4.6.0-preview5.19211.22
+ 4.6.0-preview5.19211.22
+ 4.6.0-preview5.19211.22
+ 4.6.0-preview5.19211.22
+ 4.6.0-preview5.19211.22
+ 4.6.0-preview5.19211.22
+ 4.6.0-preview5.19211.22
- 3.0.0-preview4.19212.13
+ 3.0.0-preview5.19211.22
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
+ 3.0.0-preview5.19212.9
- 3.0.0-preview4.19216.3
- 3.0.0-preview4.19216.3
- 3.0.0-preview4.19216.3
- 3.0.0-preview4.19216.3
- 3.0.0-preview4.19216.3
- 3.0.0-preview4.19216.3
- 3.0.0-preview4.19216.3
+ 3.0.0-preview5.19213.2
+ 3.0.0-preview5.19213.2
+ 3.0.0-preview5.19213.2
+ 3.0.0-preview5.19213.2
+ 3.0.0-preview5.19213.2
+ 3.0.0-preview5.19213.2
+ 3.0.0-preview5.19213.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
- 3.0.0-preview4.19216.2
+ 3.0.0-preview5.19214.1
+ 3.0.0-preview5.19214.1
+ 3.0.0-preview5.19214.1
+ 3.0.0-preview5.19214.1
+
+
- false
@@ -19,5 +17,25 @@
+
+
+ <_PublishFiles Include="$(MSBuildThisFileDirectory)..\testassets\AzureAD.WebSite\bin\$(Configuration)\netcoreapp3.0\AzureAD.WebSite.deps.json" />
+
+
+
+
+
+
+
diff --git a/src/Components/Components/src/Forms/ValidationMessage.cs b/src/Components/Components/src/Forms/ValidationMessage.cs
index bb2c861de0..52b86551dc 100644
--- a/src/Components/Components/src/Forms/ValidationMessage.cs
+++ b/src/Components/Components/src/Forms/ValidationMessage.cs
@@ -25,7 +25,7 @@ namespace Microsoft.AspNetCore.Components.Forms
[Parameter] public Expression> For { get; private set; }
/// `
- /// Constructs an instance of .
+ /// Constructs an instance of .
///
public ValidationMessage()
{
diff --git a/src/Components/test/testassets/ComponentsApp.Server/ComponentsApp.Server.csproj b/src/Components/test/testassets/ComponentsApp.Server/ComponentsApp.Server.csproj
index 2c1bf87bb7..98f54b4a53 100644
--- a/src/Components/test/testassets/ComponentsApp.Server/ComponentsApp.Server.csproj
+++ b/src/Components/test/testassets/ComponentsApp.Server/ComponentsApp.Server.csproj
@@ -10,6 +10,7 @@
+
diff --git a/src/Hosting/Hosting/src/GenericHost/GenericWebHostBuilder.cs b/src/Hosting/Hosting/src/GenericHost/GenericWebHostBuilder.cs
index 894214137c..788995b320 100644
--- a/src/Hosting/Hosting/src/GenericHost/GenericWebHostBuilder.cs
+++ b/src/Hosting/Hosting/src/GenericHost/GenericWebHostBuilder.cs
@@ -268,7 +268,7 @@ namespace Microsoft.AspNetCore.Hosting.Internal
// _builder.ConfigureContainer(ConfigureContainer);
typeof(IHostBuilder).GetMethods().First(m => m.Name == nameof(IHostBuilder.ConfigureContainer))
.MakeGenericMethod(containerType)
- .Invoke(_builder, new object[] { configureCallback });
+ .InvokeWithoutWrappingExceptions(_builder, new object[] { configureCallback });
}
// Resolve Configure after calling ConfigureServices and ConfigureContainer
diff --git a/src/Hosting/Hosting/src/Internal/ConfigureBuilder.cs b/src/Hosting/Hosting/src/Internal/ConfigureBuilder.cs
index 37b715c5b0..0daaa0567c 100644
--- a/src/Hosting/Hosting/src/Internal/ConfigureBuilder.cs
+++ b/src/Hosting/Hosting/src/Internal/ConfigureBuilder.cs
@@ -2,6 +2,7 @@
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
+using System.Globalization;
using System.Reflection;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
@@ -52,8 +53,9 @@ namespace Microsoft.AspNetCore.Hosting.Internal
}
}
}
- MethodInfo.Invoke(instance, parameters);
+
+ MethodInfo.InvokeWithoutWrappingExceptions(instance, parameters);
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/Hosting/Hosting/src/Internal/ConfigureContainerBuilder.cs b/src/Hosting/Hosting/src/Internal/ConfigureContainerBuilder.cs
index 8791a918ab..c50d66b18f 100644
--- a/src/Hosting/Hosting/src/Internal/ConfigureContainerBuilder.cs
+++ b/src/Hosting/Hosting/src/Internal/ConfigureContainerBuilder.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;
@@ -46,7 +46,7 @@ namespace Microsoft.AspNetCore.Hosting.Internal
var arguments = new object[1] { container };
- MethodInfo.Invoke(instance, arguments);
+ MethodInfo.InvokeWithoutWrappingExceptions(instance, arguments);
}
}
-}
\ No newline at end of file
+}
diff --git a/src/Hosting/Hosting/src/Internal/ConfigureServicesBuilder.cs b/src/Hosting/Hosting/src/Internal/ConfigureServicesBuilder.cs
index cf9a69327d..49e07c48f8 100644
--- a/src/Hosting/Hosting/src/Internal/ConfigureServicesBuilder.cs
+++ b/src/Hosting/Hosting/src/Internal/ConfigureServicesBuilder.cs
@@ -50,7 +50,7 @@ namespace Microsoft.AspNetCore.Hosting.Internal
arguments[0] = services;
}
- return MethodInfo.Invoke(instance, arguments) as IServiceProvider;
+ return MethodInfo.InvokeWithoutWrappingExceptions(instance, arguments) as IServiceProvider;
}
}
-}
\ No newline at end of file
+}
diff --git a/src/Hosting/Hosting/src/Internal/HostingApplicationDiagnostics.cs b/src/Hosting/Hosting/src/Internal/HostingApplicationDiagnostics.cs
index 82d825ea2b..bf09fa4dcb 100644
--- a/src/Hosting/Hosting/src/Internal/HostingApplicationDiagnostics.cs
+++ b/src/Hosting/Hosting/src/Internal/HostingApplicationDiagnostics.cs
@@ -273,6 +273,8 @@ namespace Microsoft.AspNetCore.Hosting.Internal
}
}
+ _diagnosticListener.OnActivityImport(activity, httpContext);
+
if (_diagnosticListener.IsEnabled(ActivityStartKey))
{
_diagnosticListener.StartActivity(activity, new { HttpContext = httpContext });
diff --git a/src/Hosting/Hosting/src/Internal/MethodInfoExtensions.cs b/src/Hosting/Hosting/src/Internal/MethodInfoExtensions.cs
new file mode 100644
index 0000000000..fe9b7690af
--- /dev/null
+++ b/src/Hosting/Hosting/src/Internal/MethodInfoExtensions.cs
@@ -0,0 +1,20 @@
+// 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.Reflection;
+
+namespace Microsoft.AspNetCore.Hosting.Internal
+{
+ internal static class MethodInfoExtensions
+ {
+ // This version of MethodInfo.Invoke removes TargetInvocationExceptions
+ public static object InvokeWithoutWrappingExceptions(this MethodInfo methodInfo, object obj, object[] parameters)
+ {
+ // These are the default arguments passed when methodInfo.Invoke(obj, parameters) are called. We do the same
+ // here but specify BindingFlags.DoNotWrapExceptions to avoid getting TAE (TargetInvocationException)
+ // methodInfo.Invoke(obj, BindingFlags.Default, binder: null, parameters: parameters, culture: null)
+
+ return methodInfo.Invoke(obj, BindingFlags.DoNotWrapExceptions, binder: null, parameters: parameters, culture: null);
+ }
+ }
+}
diff --git a/src/Hosting/Hosting/src/WebHostBuilder.cs b/src/Hosting/Hosting/src/WebHostBuilder.cs
index da27a76c3c..737eae8d67 100644
--- a/src/Hosting/Hosting/src/WebHostBuilder.cs
+++ b/src/Hosting/Hosting/src/WebHostBuilder.cs
@@ -175,6 +175,10 @@ namespace Microsoft.AspNetCore.Hosting
{
host.Initialize();
+ // resolve configuration explicitly once to mark it as resolved within the
+ // service provider, ensuring it will be properly disposed with the provider
+ _ = host.Services.GetService();
+
var logger = host.Services.GetRequiredService>();
// Warn about duplicate HostingStartupAssemblies
@@ -264,12 +268,13 @@ namespace Microsoft.AspNetCore.Hosting
var builder = new ConfigurationBuilder()
.SetBasePath(_hostingEnvironment.ContentRootPath)
- .AddConfiguration(_config);
+ .AddConfiguration(_config, shouldDisposeConfiguration: true);
_configureAppConfigurationBuilder?.Invoke(_context, builder);
var configuration = builder.Build();
- services.AddSingleton(configuration);
+ // register configuration as factory to make it dispose with the service provider
+ services.AddSingleton(_ => configuration);
_context.Configuration = configuration;
var listener = new DiagnosticListener("Microsoft.AspNetCore");
diff --git a/src/Hosting/Hosting/test/HostingApplicationTests.cs b/src/Hosting/Hosting/test/HostingApplicationTests.cs
index 002421a90d..dbb1cb2d23 100644
--- a/src/Hosting/Hosting/test/HostingApplicationTests.cs
+++ b/src/Hosting/Hosting/test/HostingApplicationTests.cs
@@ -11,8 +11,6 @@ using Microsoft.AspNetCore.Hosting.Internal;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.Features;
using Microsoft.Extensions.Logging;
-using Microsoft.Extensions.ObjectPool;
-using Microsoft.Extensions.Options;
using Moq;
using Xunit;
@@ -304,6 +302,34 @@ namespace Microsoft.AspNetCore.Hosting.Tests
Assert.Contains(Activity.Current.Baggage, pair => pair.Key == "Key2" && pair.Value == "value2");
}
+ [Fact]
+ public void ActivityOnExportHookIsCalled()
+ {
+ var diagnosticSource = new DiagnosticListener("DummySource");
+ var hostingApplication = CreateApplication(out var features, diagnosticSource: diagnosticSource);
+
+ bool onActivityImportCalled = false;
+ diagnosticSource.Subscribe(
+ observer: new CallbackDiagnosticListener(pair => { }),
+ isEnabled: (s, o, _) => true,
+ onActivityImport: (activity, context) =>
+ {
+ onActivityImportCalled = true;
+ Assert.Null(Activity.Current);
+ Assert.Equal("Microsoft.AspNetCore.Hosting.HttpRequestIn", activity.OperationName);
+ Assert.NotNull(context);
+ Assert.IsAssignableFrom(context);
+
+ activity.ActivityTraceFlags = ActivityTraceFlags.Recorded;
+ });
+
+ hostingApplication.CreateContext(features);
+
+ Assert.True(onActivityImportCalled);
+ Assert.NotNull(Activity.Current);
+ Assert.True(Activity.Current.Recorded);
+ }
+
private static void AssertProperty(object o, string name)
{
diff --git a/src/Hosting/Hosting/test/StartupManagerTests.cs b/src/Hosting/Hosting/test/StartupManagerTests.cs
index 8f64fb37e5..f336b3cc8d 100644
--- a/src/Hosting/Hosting/test/StartupManagerTests.cs
+++ b/src/Hosting/Hosting/test/StartupManagerTests.cs
@@ -500,8 +500,36 @@ namespace Microsoft.AspNetCore.Hosting.Tests
var app = new ApplicationBuilder(services);
app.ApplicationServices = startup.ConfigureServicesDelegate(serviceCollection);
- var ex = Assert.Throws(() => startup.ConfigureDelegate(app));
- Assert.IsAssignableFrom(ex.InnerException);
+ Assert.Throws(() => startup.ConfigureDelegate(app));
+ }
+
+ [Fact]
+ public void ConfigureServicesThrowingDoesNotThrowTargetInvocationException()
+ {
+ var serviceCollection = new ServiceCollection();
+ serviceCollection.AddSingleton, DefaultServiceProviderFactory>();
+ var services = serviceCollection.BuildServiceProvider();
+
+ var startup = StartupLoader.LoadMethods(services, typeof(StartupConfigureServicesThrows), environmentName: null);
+
+ var app = new ApplicationBuilder(services);
+
+ Assert.Throws(() => startup.ConfigureServicesDelegate(serviceCollection));
+ }
+
+ [Fact]
+ public void ConfigureThrowingDoesNotThrowTargetInvocationException()
+ {
+ var serviceCollection = new ServiceCollection();
+ serviceCollection.AddSingleton, DefaultServiceProviderFactory>();
+ var services = serviceCollection.BuildServiceProvider();
+
+ var startup = StartupLoader.LoadMethods(services, typeof(StartupConfigureThrows), environmentName: null);
+
+ var app = new ApplicationBuilder(services);
+ app.ApplicationServices = startup.ConfigureServicesDelegate(serviceCollection);
+
+ Assert.Throws(() => startup.ConfigureDelegate(app));
}
[Fact]
diff --git a/src/Hosting/Hosting/test/WebHostTests.cs b/src/Hosting/Hosting/test/WebHostTests.cs
index 2b55a00bcb..db2880f1c3 100644
--- a/src/Hosting/Hosting/test/WebHostTests.cs
+++ b/src/Hosting/Hosting/test/WebHostTests.cs
@@ -975,6 +975,54 @@ namespace Microsoft.AspNetCore.Hosting
Assert.Contains("ConfigureServices", ex.Message);
}
+ [Fact]
+ public void Dispose_DisposesAppConfiguration()
+ {
+ var providerMock = new Mock().As();
+ providerMock.Setup(d => d.Dispose());
+
+ var sourceMock = new Mock();
+ sourceMock.Setup(s => s.Build(It.IsAny()))
+ .Returns((ConfigurationProvider)providerMock.Object);
+
+ var host = CreateBuilder()
+ .ConfigureAppConfiguration(configuration =>
+ {
+ configuration.Add(sourceMock.Object);
+ })
+ .Build();
+
+ providerMock.Verify(c => c.Dispose(), Times.Never);
+
+ host.Dispose();
+
+ providerMock.Verify(c => c.Dispose(), Times.AtLeastOnce());
+ }
+
+ [Fact]
+ public async Task DisposeAsync_DisposesAppConfiguration()
+ {
+ var providerMock = new Mock().As();
+ providerMock.Setup(d => d.Dispose());
+
+ var sourceMock = new Mock();
+ sourceMock.Setup(s => s.Build(It.IsAny()))
+ .Returns((ConfigurationProvider)providerMock.Object);
+
+ var host = CreateBuilder()
+ .ConfigureAppConfiguration(configuration =>
+ {
+ configuration.Add(sourceMock.Object);
+ })
+ .Build();
+
+ providerMock.Verify(c => c.Dispose(), Times.Never);
+
+ await ((IAsyncDisposable)host).DisposeAsync();
+
+ providerMock.Verify(c => c.Dispose(), Times.AtLeastOnce());
+ }
+
public class BadConfigureServicesStartup
{
public void ConfigureServices(IServiceCollection services, int gunk) { }
diff --git a/src/Http/Http.Abstractions/src/Internal/ParsingHelpers.cs b/src/Http/Http.Abstractions/src/Internal/ParsingHelpers.cs
index 971447fa44..60c3197e3c 100644
--- a/src/Http/Http.Abstractions/src/Internal/ParsingHelpers.cs
+++ b/src/Http/Http.Abstractions/src/Internal/ParsingHelpers.cs
@@ -19,11 +19,9 @@ namespace Microsoft.AspNetCore.Http.Internal
public static StringValues GetHeaderSplit(IHeaderDictionary headers, string key)
{
var values = GetHeaderUnmodified(headers, key);
- return new StringValues(GetHeaderSplitImplementation(values).ToArray());
- }
- private static IEnumerable GetHeaderSplitImplementation(StringValues values)
- {
+ StringValues result = default;
+
foreach (var segment in new HeaderSegmentCollection(values))
{
if (!StringSegment.IsNullOrEmpty(segment.Data))
@@ -31,10 +29,12 @@ namespace Microsoft.AspNetCore.Http.Internal
var value = DeQuote(segment.Data.Value);
if (!string.IsNullOrEmpty(value))
{
- yield return value;
+ result = StringValues.Concat(in result, value);
}
}
}
+
+ return result;
}
public static StringValues GetHeaderUnmodified(IHeaderDictionary headers, string key)
diff --git a/src/Http/Http/ref/Microsoft.AspNetCore.Http.netcoreapp3.0.cs b/src/Http/Http/ref/Microsoft.AspNetCore.Http.netcoreapp3.0.cs
index c2ac47f401..4070311a3b 100644
--- a/src/Http/Http/ref/Microsoft.AspNetCore.Http.netcoreapp3.0.cs
+++ b/src/Http/Http/ref/Microsoft.AspNetCore.Http.netcoreapp3.0.cs
@@ -406,7 +406,7 @@ namespace Microsoft.AspNetCore.Http.Internal
{
public ItemsDictionary() { }
public ItemsDictionary(System.Collections.Generic.IDictionary