【问题标题】:Configure ASP.NET Managed Handler to handle -all- requests配置 ASP.NET 托管处理程序以处理所有请求
【发布时间】:2019-01-07 21:11:41
【问题描述】:

我有一个简单的目标;我只想将每一个 404 错误重定向到单页应用程序,以便 SPA 处理路由。

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

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

在收到请求后几乎立即发出响应,这似乎表明 IIS 在任何 .NET 托管处理程序接触它之前立即将其作为 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

预计到达时间:

我在本地运行服务器(不知道为什么不早点这样做),确切的错误似乎是 StaticFile 处理程序中的故障。

HTTP Error 404.0 - Not Found

...

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

【问题讨论】:

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


    【解决方案1】:

    这似乎解决了我的问题:

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

    【讨论】:

      猜你喜欢
      • 2016-04-06
      • 2018-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多