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

问题描述 投票:2回答:4

我有一个带有OWN的Web API 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);
}

我也有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);
    }
}

我注意到当我评论出app.UseWebApi(config)线时,MVC路线再次开始工作。

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

谢谢

asp.net-mvc asp.net-mvc-5 asp.net-web-api2 owin
4个回答
4
投票

app.UseWebApi()命令用于与OWIN进行自托管,这与MVC不兼容,因此您只能在项目完全是Web Api项目时使用它。只要删除它,你就是金色的。


1
投票

尝试在RouteConfig.cs文件中添加此代码。

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

0
投票

在我的情况下,我不得不将所有配置从Application_Start上面的帖子移动到Startup.Configuration替换app.UseWebApi(config);


0
投票

这对我来说是owin启动课。

// instead of : app.UseWebApi(GlobalConfiguration.Configuration)    
app.UseWebApi(new HttpConfiguration());
© www.soinside.com 2019 - 2024. All rights reserved.