我有一个带有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路线再次开始工作。
有谁知道发生了什么以及如何解决这个问题?
谢谢
app.UseWebApi()
命令用于与OWIN进行自托管,这与MVC不兼容,因此您只能在项目完全是Web Api项目时使用它。只要删除它,你就是金色的。
尝试在RouteConfig.cs文件中添加此代码。
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
在我的情况下,我不得不将所有配置从Application_Start
上面的帖子移动到Startup.Configuration
替换app.UseWebApi(config);
这对我来说是owin启动课。
// instead of : app.UseWebApi(GlobalConfiguration.Configuration)
app.UseWebApi(new HttpConfiguration());