到MVC控制器的属性路由无法解析

时间:2013-10-01 04:32:08

标签: asp.net-mvc-routing self-hosting asp.net-mvc-5 owin

我正在使用基于OWIN的命令行Self-Host应用程序,新属性路由对我的Web API控制器非常有用。但是,它们似乎不适用于我的常规MVC控制器。

我已尝试在start方法中使用路径模板映射旧路径,我也尝试使用属性路由。无论哪种方式,当我尝试击中这些路线时,我得到404.

在我的开始代码中,我调用了Owin.WebApiAppBuilderExtensions类中定义的IAppBuilder.UseWebApi(...)扩展方法,但是我没有看到MVC的等价物,比如UseMvc(...)。他们可以共存吗?我错过了一些明显的东西吗?

这是我的开始代码:

var config = new HttpConfiguration();
config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(Startup.OAuthOptions.AuthenticationType));
config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
config.MapHttpAttributeRoutes();

app.UseCookieAuthentication(CookieOptions);
app.UseExternalSignInCookie(CookieAuthenticationDefaults.ExternalAuthenticationType);
app.UseOAuthBearerTokens(OAuthOptions, ExternalOAuthAuthenticationType);
app.UseFacebookAuthentication(appId: "12345", appSecret: "abcdef");
app.UseWebApi(config);

这是我原来的MVC课程:

[RoutePrefix("Home")]
public class HomeController : Controller
{
    [HttpGet("Index")]
    public ActionResult Index()
    {
        return Content("Hello world!", "text/plain");
    }
}

当我在我的应用上点击/Home/Index时,我会得到404。

2 个答案:

答案 0 :(得分:4)

目前,ASP.NET MVC不能在OWIN上运行。 Web API是最近构建的,并且考虑到了这种灵活性,因此它与System.Web分离,特别是HttpContext,它允许它在OWIN上运行。

在OWIN上运行的一些替代方案是FubuMVCNancySimple.Web

David Fowler已经完成了一些工作,并且在OWIN上运行了一个有点工作的MVC原型,但代码还没有被公开,并且没有任何关于它是否会在短期内出现的消息。

答案 1 :(得分:1)

确保为AttributeRouting安装了NuGet包“WebApp API”。

类似的问题:MVC Attribute Routing Not Working