配置ASP.NET托管处理程序以处理-all-请求

时间:2019-01-07 21:11:42

标签: c# asp.net asp.net-mvc iis-8

我有一个简单的目标;我只希望-每-404错误都重定向到SPA的单页应用程序以处理路由。

这似乎适用于ASP.NET应用程序(基于现有Controller)中可能存在的路由。但是,如果我导航到不可能是ASP.NET路由的路由(正在发生,因为某些路由仅在Vue应用程序中位于客户端),则IIS似乎会立即负责该路由。请求并发布此简单的text / html响应:

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

响应几乎是在收到请求后立即发出的,这似乎表明在任何.NET托管处理程序接触到它之前,IIS正在立即将它作为404处理。

如何停止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 :(得分:0)

这似乎解决了我的问题:

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