Чтобы поймать url , у которого нет маршрута, можно сделать что-то вроде этого
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2).AddRazorPagesOptions(options =>
{
options.Conventions.AddPageRoute("/Error/Nopage", "{*url}");
});
Но затем я заметил, что метод OnGet()
в Nopage.cshtml.cs
получаетвызывается для всех маршрутов, даже для того, у которого есть маршрут.
Это стандартное поведение и как предполагается ловить не 1017 * URL-адреса без маршрутизации ?... или есть какой-то другой способ поймать url без маршрутов.
Кроме того, с точки зрения рабочей нагрузки / производительности, кажется неправильным инициировать и загружать модель страницы, котораяне будет использоваться.
Как примечание, до использования AddPageRoute
я делал это в Startup.cs
, который работал просто отлично, хотя вышеописанное выглядело скорее как как человекпредположим, чтобы сделать это .
app.UseMvc();
// Page missing in MVC...
app.Use(async (context, next) =>
{
//simplified code snippet
s = await File.ReadAllTextAsync(Path.Combine(env.WebRootPath, "pagemissing.html"));
await context.Response.WriteAsync(s);
});