无法将 MVC 控制器与 ASP.Net Web API 2 一起使用

Unable to use MVC Controller with ASP.Net Web API 2

我目前拥有的(有效)

我有一个 ASP.Net Web API 2 项目。好吧,至少这是我记得在设置项目时创建的内容,我不确定如何确认。

我正在使用 Visual Studio 2017 和 .Net Framework 4.6 版。

就 API 方面而言,这一切都很好。 API控制器很好,我可以获取数据,post数据等

只是一些附加信息,以防万一,我已将 SignalR 添加到已配置的项目中。

可能很重要,这里是我的各种配置文件:

Global.asax.cs

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();
    GlobalConfiguration.Configure(WebApiConfig.Register);
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    BundleConfig.RegisterBundles(BundleTable.Bundles);
}

RouteConfig.cs

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

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

WebApiConfig.cs

public static void Register(HttpConfiguration config)
{
    // Configure Web API to use only bearer token authentication.
    config.SuppressDefaultHostAuthentication();
    config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));

    // Web API routes
    config.MapHttpAttributeRoutes();

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

我正在尝试做什么(这不起作用)

不过,我想添加一个 HTML 页面,以便用户可以查看一些信息(只是静态的 HTML 内容,没什么特别的)。所以我创建了一个标准的 MVC 控制器,其操作如下(并且 Index.cshtml 视图位于正确的 Views 文件夹中):

public class NotificationsController : Controller
{
    public ActionResult Index()
    {
        return View();
    }
}

问题是这个动作永远不会得到 运行(我有一个断点)。

我已经尝试找出问题所在

现在我明白了,可能有很多不同的东西,所以这是我迄今为止尝试调试问题的方法:

当我在浏览器中访问 URL 时(例如 http://localhost:59461/Notifications),我得到:

localhost is currently unable to handle this request. HTTP ERROR 500

起初我以为这可能是路由问题,但是在 VS 2017 中您可以看到此操作的请求失败:

那么路由肯定工作正常吗?不幸的是,单击请求仅确认 500 错误,并没有提供有关该问题的更多信息。

我能找到的唯一附加信息是在 Windows 事件查看器中,我在其中收到以下错误:

Application 'MACHINE/WEBROOT/APPHOST/PROJECTNAME' with physical root 'C:\PATH TO PROJECT FOLDER\' failed to start process with commandline '%LAUNCHER_PATH% %LAUNCHER_ARGS%', ErrorCode = '0x80070002 : 0.

但我对这个错误进行了大量研究,但尚未找到适合我的问题的解决方案或解释。

我也试过添加 Application_Error 但这也没有抛出任何异常。

此时我不知道如何找出问题的原因。我唯一能想到的是我需要专门配置一些东西以允许 Web API 项目与 MVC 控制器一起工作,但我也找不到任何东西。

如何正确调试此问题并找到原因?

呃...所以我解决了问题...

偶然发现this post后,有建议删除Visual Studio解决方案文件夹中的.vs文件夹。这样做并重建解决方案后,它开始工作了。

不知道那个文件夹中到底是什么导致了这个问题,也许是某些东西被破坏了或者某种缓存冲突,谁知道呢...