3

我正在使用基于 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。

4

2 回答 2

4

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

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

David Fowler在这方面做了一些工作,并且有一个在 OWIN 上运行的 MVC 原型,但代码尚未公开,也没有关于是否会很快公开的消息。

于 2013-10-13T11:58:24.233 回答
1

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

类似的问题:MVC Attribute Routing Not Working

于 2013-10-01T20:13:22.337 回答