From 1e70883e870df104d793bde9ae74ca84fd794162 Mon Sep 17 00:00:00 2001 From: Pranav K Date: Mon, 13 Apr 2020 14:07:15 -0700 Subject: [PATCH] Create a ref-assembly package for HttpHandler (#20382) * Create a ref-assembly package for HttpHandler Fixes #19202 --- eng/Version.Details.xml | 4 +- eng/Versions.props | 2 +- src/Components/Blazor.sln | 18 ++ .../targets/BuiltInBclLinkerDescriptor.xml | 6 - .../test/RuntimeDependenciesResolverTest.cs | 2 +- .../src/Http/BrowserRequestCache.cs | 65 +++++++ ...Option.cs => BrowserRequestCredentials.cs} | 2 +- .../src/Http/BrowserRequestMode.cs | 32 ++++ .../WebAssemblyHttpMessageHandlerOptions.cs | 59 ------ ...WebAssemblyHttpRequestMessageExtensions.cs | 169 ++++++++++++++++++ ...t.AspNetCore.Components.WebAssembly.csproj | 6 +- ....Components.WebAssembly.HttpHandler.csproj | 17 ++ ....WebAssembly.HttpHandler.netstandard2.1.cs | 11 ++ ....Components.WebAssembly.HttpHandler.nuspec | 13 ++ .../testassets/MonoSanity/wwwroot/loader.js | 4 +- .../BasicTestApp/BasicTestApp.csproj | 16 ++ .../CookieCounterComponent.razor | 8 +- .../test/testassets/BasicTestApp/Program.cs | 9 - .../Client/_Imports.razor | 1 + 19 files changed, 361 insertions(+), 83 deletions(-) create mode 100644 src/Components/WebAssembly/WebAssembly/src/Http/BrowserRequestCache.cs rename src/Components/WebAssembly/WebAssembly/src/Http/{FetchCredentialsOption.cs => BrowserRequestCredentials.cs} (95%) create mode 100644 src/Components/WebAssembly/WebAssembly/src/Http/BrowserRequestMode.cs delete mode 100644 src/Components/WebAssembly/WebAssembly/src/Http/WebAssemblyHttpMessageHandlerOptions.cs create mode 100644 src/Components/WebAssembly/WebAssembly/src/Http/WebAssemblyHttpRequestMessageExtensions.cs create mode 100644 src/Components/WebAssembly/WebAssemblyHttpHandler/src/Microsoft.AspNetCore.Components.WebAssembly.HttpHandler.csproj create mode 100644 src/Components/WebAssembly/WebAssemblyHttpHandler/src/Microsoft.AspNetCore.Components.WebAssembly.HttpHandler.netstandard2.1.cs create mode 100644 src/Components/WebAssembly/WebAssemblyHttpHandler/src/Microsoft.AspNetCore.Components.WebAssembly.HttpHandler.nuspec diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 3d63779ccd..e09d2e3252 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -9,9 +9,9 @@ --> - + https://github.com/dotnet/blazor - 7659b5fda2406d854c72436bdc24f1ff958995f8 + f429c0dd1a5dc84a70c66091460747d52475874f https://github.com/dotnet/corefx diff --git a/eng/Versions.props b/eng/Versions.props index 636d741edc..527422bbe7 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -99,7 +99,7 @@ 3.1.0 - 3.2.0-preview5.20210.1 + 3.2.0-preview5.20210.3 3.1.3-servicing.20128.2 3.1.3-servicing.20128.2 diff --git a/src/Components/Blazor.sln b/src/Components/Blazor.sln index 0b6d018107..6070e8a197 100644 --- a/src/Components/Blazor.sln +++ b/src/Components/Blazor.sln @@ -39,6 +39,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DevServer", "DevServer", "{ EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Components.WebAssembly.DevServer", "WebAssembly\DevServer\src\Microsoft.AspNetCore.Components.WebAssembly.DevServer.csproj", "{0ED336B7-6FAB-4872-8D75-1CDD5A5DDBB2}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Http", "Http", "{F4995C96-8D4E-4B26-8FB8-614B020156C2}" +EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WebAssembly.JSInterop", "WebAssembly.JSInterop", "{37FA056D-A7B3-4F72-A8B9-8D3C175E831E}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.JSInterop.WebAssembly", "WebAssembly\JSInterop\src\Microsoft.JSInterop.WebAssembly.csproj", "{FBD7C733-200E-4BED-8B31-2610C2263F72}" @@ -107,6 +109,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Compon EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Components.WebAssembly.Server.Tests", "WebAssembly\Server\test\Microsoft.AspNetCore.Components.WebAssembly.Server.Tests.csproj", "{72D3D00C-5281-455F-9E19-646EE766009A}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Components.WebAssembly.HttpHandler", "WebAssembly\WebAssemblyHttpHandler\src\Microsoft.AspNetCore.Comopnents.WebAssembly.HttpHandler.csproj", "{52744BCB-1046-48C0-93A4-19A311A907B2}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -537,6 +541,18 @@ Global {72D3D00C-5281-455F-9E19-646EE766009A}.Release|x64.Build.0 = Release|Any CPU {72D3D00C-5281-455F-9E19-646EE766009A}.Release|x86.ActiveCfg = Release|Any CPU {72D3D00C-5281-455F-9E19-646EE766009A}.Release|x86.Build.0 = Release|Any CPU + {52744BCB-1046-48C0-93A4-19A311A907B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {52744BCB-1046-48C0-93A4-19A311A907B2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {52744BCB-1046-48C0-93A4-19A311A907B2}.Debug|x64.ActiveCfg = Debug|Any CPU + {52744BCB-1046-48C0-93A4-19A311A907B2}.Debug|x64.Build.0 = Debug|Any CPU + {52744BCB-1046-48C0-93A4-19A311A907B2}.Debug|x86.ActiveCfg = Debug|Any CPU + {52744BCB-1046-48C0-93A4-19A311A907B2}.Debug|x86.Build.0 = Debug|Any CPU + {52744BCB-1046-48C0-93A4-19A311A907B2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {52744BCB-1046-48C0-93A4-19A311A907B2}.Release|Any CPU.Build.0 = Release|Any CPU + {52744BCB-1046-48C0-93A4-19A311A907B2}.Release|x64.ActiveCfg = Release|Any CPU + {52744BCB-1046-48C0-93A4-19A311A907B2}.Release|x64.Build.0 = Release|Any CPU + {52744BCB-1046-48C0-93A4-19A311A907B2}.Release|x86.ActiveCfg = Release|Any CPU + {52744BCB-1046-48C0-93A4-19A311A907B2}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -558,6 +574,7 @@ Global {9C41BA92-FBC8-4E11-9A71-0B07906A2D6C} = {B4ACD900-27B6-482B-B434-2C1E86E9D8BC} {A44FB7D1-78AB-41C4-B1C7-94399396EA6C} = {B29FB58D-FAE5-405E-9695-BCF93582BE9A} {0ED336B7-6FAB-4872-8D75-1CDD5A5DDBB2} = {A44FB7D1-78AB-41C4-B1C7-94399396EA6C} + {F4995C96-8D4E-4B26-8FB8-614B020156C2} = {B29FB58D-FAE5-405E-9695-BCF93582BE9A} {37FA056D-A7B3-4F72-A8B9-8D3C175E831E} = {B29FB58D-FAE5-405E-9695-BCF93582BE9A} {FBD7C733-200E-4BED-8B31-2610C2263F72} = {37FA056D-A7B3-4F72-A8B9-8D3C175E831E} {7920B09F-8016-49CF-A229-E72D0CECDD17} = {B29FB58D-FAE5-405E-9695-BCF93582BE9A} @@ -591,6 +608,7 @@ Global {710765DD-C2AD-4DBB-A114-14E62F31F463} = {B29FB58D-FAE5-405E-9695-BCF93582BE9A} {DB1DC77D-122E-49E8-AB16-1AC8AEEFEEFF} = {710765DD-C2AD-4DBB-A114-14E62F31F463} {72D3D00C-5281-455F-9E19-646EE766009A} = {7920B09F-8016-49CF-A229-E72D0CECDD17} + {52744BCB-1046-48C0-93A4-19A311A907B2} = {F4995C96-8D4E-4B26-8FB8-614B020156C2} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {27A36094-AA50-4FFD-ADE6-C055E391F741} diff --git a/src/Components/WebAssembly/Build/src/targets/BuiltInBclLinkerDescriptor.xml b/src/Components/WebAssembly/Build/src/targets/BuiltInBclLinkerDescriptor.xml index 6d3091310f..4c955b737a 100644 --- a/src/Components/WebAssembly/Build/src/targets/BuiltInBclLinkerDescriptor.xml +++ b/src/Components/WebAssembly/Build/src/targets/BuiltInBclLinkerDescriptor.xml @@ -19,12 +19,6 @@ - - - - - - + + <_HttpHandlerAssembly Include="@(_BlazorUserRuntimeAssembly)" + Condition="%(_BlazorUserRuntimeAssembly.ProjectReferenceOriginalItemSpec) == '..\..\..\WebAssembly\WebAssemblyHttpHandler\src\Microsoft.AspNetCore.Components.WebAssembly.HttpHandler.csproj'" /> + + <_BlazorUserRuntimeAssembly Remove="@(_HttpHandlerAssembly)" /> + + + diff --git a/src/Components/test/testassets/BasicTestApp/HttpClientTest/CookieCounterComponent.razor b/src/Components/test/testassets/BasicTestApp/HttpClientTest/CookieCounterComponent.razor index c604c88486..7497f884f9 100644 --- a/src/Components/test/testassets/BasicTestApp/HttpClientTest/CookieCounterComponent.razor +++ b/src/Components/test/testassets/BasicTestApp/HttpClientTest/CookieCounterComponent.razor @@ -1,3 +1,5 @@ +@using Microsoft.AspNetCore.Components.WebAssembly.Http +@using System.Net.Http @inject System.Net.Http.HttpClient Http

Cookie counter

@@ -32,7 +34,11 @@ async Task DoRequest(string url) { requestInProgress = true; - responseText = await Http.GetStringAsync(testServerBaseUrl + url); + var request = new HttpRequestMessage(HttpMethod.Get, testServerBaseUrl + url); + request.SetBrowserRequestCredentials(BrowserRequestCredentials.Include); + using var response = await Http.SendAsync(request); + + responseText = await response.Content.ReadAsStringAsync(); requestInProgress = false; } } diff --git a/src/Components/test/testassets/BasicTestApp/Program.cs b/src/Components/test/testassets/BasicTestApp/Program.cs index b0ad4fbd44..b551746301 100644 --- a/src/Components/test/testassets/BasicTestApp/Program.cs +++ b/src/Components/test/testassets/BasicTestApp/Program.cs @@ -3,7 +3,6 @@ using System; using System.Globalization; -using System.Linq; using System.Net.Http; using System.Runtime.InteropServices; using System.Threading.Tasks; @@ -28,14 +27,6 @@ namespace BasicTestApp await SimulateErrorsIfNeededForTest(); var builder = WebAssemblyHostBuilder.CreateDefault(args); - - if (RuntimeInformation.IsOSPlatform(OSPlatform.Create("WEBASSEMBLY"))) - { - // Needed because the test server runs on a different port than the client app, - // and we want to test sending/receiving cookies under this config - WebAssemblyHttpMessageHandlerOptions.DefaultCredentials = FetchCredentialsOption.Include; - } - builder.RootComponents.Add("root"); builder.Services.AddSingleton(new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }); diff --git a/src/ProjectTemplates/ComponentsWebAssembly.ProjectTemplates/content/ComponentsWebAssembly-CSharp/Client/_Imports.razor b/src/ProjectTemplates/ComponentsWebAssembly.ProjectTemplates/content/ComponentsWebAssembly-CSharp/Client/_Imports.razor index d0897fa397..ac695bb5b1 100644 --- a/src/ProjectTemplates/ComponentsWebAssembly.ProjectTemplates/content/ComponentsWebAssembly-CSharp/Client/_Imports.razor +++ b/src/ProjectTemplates/ComponentsWebAssembly.ProjectTemplates/content/ComponentsWebAssembly-CSharp/Client/_Imports.razor @@ -6,6 +6,7 @@ @using Microsoft.AspNetCore.Components.Forms @using Microsoft.AspNetCore.Components.Routing @using Microsoft.AspNetCore.Components.Web +@using Microsoft.AspNetCore.Components.WebAssembly.Http @using Microsoft.JSInterop @*#if (!Hosted) @using ComponentsWebAssembly_CSharp