WebApi 和 MVC 路由在 Server 2012 IIS 8.5 上不起作用(404.0 错误)

Tyl*_*ght 5 asp.net asp.net-mvc asp.net-routing asp.net-web-api2 iis-8.5

我有一个使用 .NET Framework 4.7.1 的应用程序,其中定义了 WebAPI 和 MVC 路由。它们都在使用 IISExpress 进行本地调试时工作,但是当我部署到开发服务器(带有 IIS 8.5 的 Windows Server 2012R2)时,我得到的只是每个路由的 404.0 错误。我在 IIS 应用程序的根文件夹中放置了一个静态 test.aspx 文件,该文件返回正确,因此 IIS 似乎只是没有选择路由。我已经尝试了所有可以谷歌的东西,但没有任何东西可以修复它。

这是我的 RouteConfig.cs 代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
           name: "Default",
           url: "{controller}/{action}/{id}",
           defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
       );

    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的 WebApiConfig.cs 代码:

using System.Web.Http;
using System.Net.Http.Formatting;

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        // Web API routes
        config.MapHttpAttributeRoutes();

        config.Routes.IgnoreRoute("axd", "{resource}.axd/{*pathInfo}");

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

        config.Formatters.Clear();
        config.Formatters.Add(new JsonMediaTypeFormatter());

        // configure additional webapi settings here..
    }
}
Run Code Online (Sandbox Code Playgroud)

我的 Web.config 包括以下内容:

<modules runAllManagedModulesForAllRequests="true"/>
<!-- Show detailed error messages -->
<httpErrors errorMode="Detailed" />

<handlers>
  <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
  <remove name="OPTIONSVerbHandler" />
  <remove name="TRACEVerbHandler" />
  <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" 
type="System.Web.Handlers.TransferRequestHandler" 
preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
Run Code Online (Sandbox Code Playgroud)

我已经检查并在服务器上安装了 .NET Framework 4.7.1。任何帮助将不胜感激。