WebAPI + MVC + Owin:MVC 路由不起作用

pef*_*cio 4 asp.net-mvc owin asp.net-mvc-5 asp.net-web-api2

我有一个带有 OWIN 的 WebAPI 2 应用程序。现在我尝试向所有内容添加 MVC 5 控制器,但找不到我的 MVC 路由。我收到以下错误:

未找到与请求 URI“ https://localhost:44320/home ”匹配的 HTTP 资源。

未找到与名为“home”的控制器匹配的类型。

控制器的名称是正确的 ( HomeController),它是公共的,并且我正在 Global.asax 中配置路由:

protected void Application_Start()
{
    HttpConfiguration config = GlobalConfiguration.Configuration;
    ModelBinderConfig.RegisterModelBinders(config.Services);
    GlobalConfiguration.Configure(WebApiConfig.Register);
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    BundleConfig.RegisterBundles(BundleTable.Bundles);
}
Run Code Online (Sandbox Code Playgroud)

我还有 OWIN Startup 课程:

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        var config = GlobalConfiguration.Configuration;

        var globalExceptionHandler = GetGlobalExceptionHandlerConfiguration();
        config.Services.Replace(typeof(IExceptionHandler), globalExceptionHandler);
        app.UseWebApi(config);
    }
}
Run Code Online (Sandbox Code Playgroud)

我注意到当我注释掉该app.UseWebApi(config)行时,MVC 路由再次开始工作。

有谁知道发生了什么事以及如何解决这个问题?

谢谢

Chr*_*att 6

app.UseWebApi()命令用于使用 OWIN 自托管,与 MVC 不兼容,因此只有当您的项目完全是 Web Api 项目时才能使用它。只要把它去掉,你就变得金黄了。