Настройте управляемый обработчик ASP.NET для обработки всех запросов - PullRequest
0 голосов
/ 08 января 2019

У меня простая цель; Я просто хочу, чтобы каждую ошибку 404 перенаправляли в одностраничное приложение для SPA для обработки маршрутизации.

Похоже, это работает для маршрутов, которые могут существовать в приложении ASP.NET (на основе существующих контроллеров). Однако, если я перехожу к маршруту, который не мог быть маршрутом ASP.NET (что происходит, поскольку некоторые маршруты существуют только на стороне клиента в приложении Vue), создается впечатление, что IIS немедленно берет на себя ответственность за запрос и выдача этого простого текстового / html ответа:

The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.

Ответ выдается почти сразу после получения запроса, что, по-видимому, указывает на то, что IIS немедленно обрабатывает его как 404 до того, как его обработают все управляемые обработчики .NET.

Как мне остановить IIS от этого?

Дополнительная информация:

Откат ошибки ASP.NET Web.config уже существует:

<system.webServer>
<httpErrors>
      <remove statusCode="404" subStatusCode="-1" />
      <error statusCode="404" prefixLanguageFilePath="" path="/vue-fallback.html" responseMode="File" />
    </httpErrors>
</system.webServer>

Это сервер ASP.NET MVC; System.Web.Mvc v4.0.0.0.

Версия IIS: IIS 8

ETA:

Я запустил сервер локально (не уверен, почему я не сделал этого раньше), точная ошибка - ошибка обработчика StaticFile.

HTTP Error 404.0 - Not Found

...

Module     IIS Web Core
Notification       MapRequestHandler
Handler    StaticFile
Error Code     0x80070002

1 Ответ

0 голосов
/ 08 января 2019

Кажется, это решает мою проблему:

routes.MapRoute(
                "Vue-Fallback",
                "{*catchall}",
               new { controller = "Home", action = "VueFallback" }
           );
...