我有一个简单的目标;我只希望-每-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
答案 0 :(得分:0)
这似乎解决了我的问题:
routes.MapRoute(
"Vue-Fallback",
"{*catchall}",
new { controller = "Home", action = "VueFallback" }
);