Поймать весь маршрут, мешающий статическим файлам - PullRequest
0 голосов
/ 27 августа 2018

Я пытаюсь перенаправить все несопоставленные URL-адреса в резервный маршрут, который будет контролировать поведение запроса, если маршрут не сопоставлен. Ниже приведен код, который позволяет это. На этом сайте также включена поддержка SPA, и при добавлении аварийного перехвата всех маршрутов SPA перестает работать, если я не добавлю исключающее ограничение, говоря, что любые маршруты, которые не заканчиваются на «-ng», не будут перенаправлены на этот резервный вариант.

app.UseStaticFiles();
app.UseSpaStaticFiles();

app.UseMvc(routes => {
    routes.MapRoute(
        name: "default",
        template: "{controller}/{action}/{id?}",
        defaults: new { controller = "Home", action ="Index" }
    );

    routes.MapRoute(
        name: "fallback",
        template: "{*slug}",
        defaults: new { controller = "Fallback", action = "Index" },
        constraints: new
        {
            serverRoute = new ServerRouteConstraint(url => !url.PathAndQuery.EndsWith("-ng", StringComparison.InvariantCultureIgnoreCase))
        }
    );
});

app.UseSpa(spa =>
{
    spa.Options.SourcePath = "ClientApp";

    if (env.IsDevelopment())
    {
        spa.UseAngularCliServer(npmScript: "start");
    }
});

Кажется, что ограничение исключения выполнило свою работу, но теперь похоже, что я должен добавить ограничение исключения и к статическим файлам. Я хочу избежать исключения по расширениям файлов, но это заставляет меня думать, что мой вызов UseSpaStaticFiles просто переопределяется моим запасным маршрутом.

Что может помочь, если есть способ, чтобы маршруты SPA имели приоритет над моим запасным вариантом. Или есть способ направить все статические файлы по локальному каталогу до перехода на запасной вариант.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...