我正在使用一个基于OWIN的命令行Self-Host应用程序,新的属性路由非常适合我的Web API控制器。但是,它们似乎不适用于我的常规MVC控制器。
在我的start方法中,我尝试了使用路由模板的旧方法来映射路由,我也尝试了使用属性routes来实现。无论哪种方式,当我尝试点击这些路线时,我都会得到404。
在我的开始代码中,我调用了IAppBuilder.UseWebApi(...)在Owin.WebApiAppBuilderExtensions类中定义了扩展方法,但我没有看到类似于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。
发布于 2013-10-13 19:58:24
目前,ASP.NET MVC不能在OWIN上运行。Web是最近构建的,并且考虑到了这种灵活性,因此它与System.Web
解耦,特别是HttpContext
,这使得它可以在OWIN上运行。
在OWIN上运行的一些替代方案是FubuMVC、Nancy和Simple.Web
David Fowler已经在这方面做了一些工作,并且有一个在OWIN上运行的MVC的工作原型,但是代码还没有公开,也没有关于它是否会很快发布的消息。
发布于 2013-10-02 04:13:22
请确保您已经安装了AttributeRouting的NuGet包WebApp API。
https://stackoverflow.com/questions/19108024
复制相似问题