diff --git a/src/Microsoft.AspNetCore.Mvc.RazorPages/DependencyInjection/RazorPagesOptionsExtensions.cs b/src/Microsoft.AspNetCore.Mvc.RazorPages/DependencyInjection/RazorPagesOptionsExtensions.cs index fa8d0f142a..c7b46332db 100644 --- a/src/Microsoft.AspNetCore.Mvc.RazorPages/DependencyInjection/RazorPagesOptionsExtensions.cs +++ b/src/Microsoft.AspNetCore.Mvc.RazorPages/DependencyInjection/RazorPagesOptionsExtensions.cs @@ -193,9 +193,9 @@ namespace Microsoft.Extensions.DependencyInjection throw new ArgumentException(Resources.ArgumentCannotBeNullOrEmpty, nameof(pageName)); } - if (string.IsNullOrEmpty(route)) + if (route == null) { - throw new ArgumentException(Resources.ArgumentCannotBeNullOrEmpty, nameof(route)); + throw new ArgumentNullException(nameof(route)); } options.Conventions.Add(new PageConvention(pageName, model => diff --git a/test/Microsoft.AspNetCore.Mvc.FunctionalTests/RazorPagesTest.cs b/test/Microsoft.AspNetCore.Mvc.FunctionalTests/RazorPagesTest.cs index 196563e4cd..ac243614da 100644 --- a/test/Microsoft.AspNetCore.Mvc.FunctionalTests/RazorPagesTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.FunctionalTests/RazorPagesTest.cs @@ -1037,6 +1037,19 @@ Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary`1[AspNetCore._InjectedP Assert.StartsWith(expected, response.Trim()); } + [Fact] + public async Task PagesCanByRoutedToApplicationRoot_ViaAddPageRoute() + { + // Arrange + var expected = "Hello from NotTheRoot"; + + // Act + var response = await Client.GetStringAsync(""); + + // Assert + Assert.StartsWith(expected, response.Trim()); + } + private async Task AddAntiforgeryHeaders(HttpRequestMessage request) { var getResponse = await Client.GetAsync(request.RequestUri); diff --git a/test/WebSites/RazorPagesWebSite/Pages/NotTheRoot.cshtml b/test/WebSites/RazorPagesWebSite/Pages/NotTheRoot.cshtml new file mode 100644 index 0000000000..f919c9d628 --- /dev/null +++ b/test/WebSites/RazorPagesWebSite/Pages/NotTheRoot.cshtml @@ -0,0 +1,2 @@ +@page +Hello from NotTheRoot diff --git a/test/WebSites/RazorPagesWebSite/Startup.cs b/test/WebSites/RazorPagesWebSite/Startup.cs index d4c369bfb1..04e213fdc9 100644 --- a/test/WebSites/RazorPagesWebSite/Startup.cs +++ b/test/WebSites/RazorPagesWebSite/Startup.cs @@ -20,6 +20,7 @@ namespace RazorPagesWebSite options.AuthorizeFolder("/Pages/Admin"); options.AllowAnonymousToPage("/Pages/Admin/Login"); options.AddPageRoute("/HelloWorldWithRoute", "Different-Route/{text}"); + options.AddPageRoute("/Pages/NotTheRoot", string.Empty); }) .WithRazorPagesAtContentRoot(); }