带MVC6的AngularJS

带MVC6的AngularJS,angularjs,asp.net-mvc,dnx,Angularjs,Asp.net Mvc,Dnx,这是一个MVC6/WebApi应用程序。我试图在后端使用WebApi,在前端使用AngularJS 我有两个静态文件:index.html和login.html (最终会有更多的静态文件。) 我的Angular应用程序包含在index.html中,而视图(如/login)是从静态文件(即login.html)加载的 如果我转到我的根URL,index.html就可以正常加载。但是,如果我转到/login,我会收到一个404页面未找到 现在,可以说,我不想让我的应用程序陷入一堆控制器和视图的泥潭,

这是一个MVC6/WebApi应用程序。我试图在后端使用WebApi,在前端使用AngularJS

我有两个静态文件:index.html和login.html
(最终会有更多的静态文件。)

我的Angular应用程序包含在index.html中,而视图(如/login)是从静态文件(即login.html)加载的

如果我转到我的根URL,index.html就可以正常加载。但是,如果我转到/login,我会收到一个404页面未找到

现在,可以说,我不想让我的应用程序陷入一堆控制器和视图的泥潭,因为不需要简单地为静态文件服务。那太过分了

我设置了路由来服务API调用(即~/API/任何东西)。我如何让MVC6忽略所有其他路线

仅供参考,MVC 6中似乎也不推荐使用MapPageRoute

编辑:
为了让它真正工作,我做了一件事,那就是添加我自己的中间件来拦截请求。下面的代码是在Configure方法中的所有默认中间件之后添加的:

这似乎有点多,只是一个黑客。它所做的只是允许任何以“/api”开头的请求通过(然后由MVC中间件拾取),但任何其他调用都是由index.html的内容提供的。因此,如果我请求的URL是“/login”,则提供index.html文件,然后Angular查看路由并将login.html文件加载到视图中


还有其他建议吗?

我能按你的要求做。基本上,我在索引操作中添加了一个全面的路由:

[路由(“{*path}”)]


这意味着如果没有MVC操作不存在,请调用我的索引操作,角度路由将从此处开始

好的,因为MVC 6/ASP.NET 5框架中不存在某些东西,所以我创建了自己的中间件,提供了更大的灵活性。它已添加到GitHub,并可通过NuGet获得


项目页面是:

您使用的是什么路由?内部路由器还是用户界面路由器?我正在使用angular的用户界面路由器。另外,再次检查这个问题……我添加了一个可行的黑客,但正在寻找替代方案。值得一提的是,你所说的“看起来像黑客”并不是,而是Html5推送状态路由的处理方式,几乎在每一个框架上,我都提到它是一种黑客行为,因为在以前的MVC版本中,有一种扩展方法MapPageRoute,我们可以使用MVC的内置功能将所有请求映射到index.html。不幸的是,这种方法在MVC6中不再可用。这看起来像是一次黑客攻击,因为我认为微软(推动Angular)会制造某种机制来支持这一点,而不是强迫我们使用控制器和动作。谢谢你的回复,但你没有抓住要点。。。我不想使用控制器/视图。这是一个与WebApi通信的纯客户端应用程序。
app.Use(next => async context =>
{
    if (context.Request.Path.Value.StartsWith("/api"))
        await next.Invoke(context);
    else
        await context.Response.WriteAsync(System.IO.File.ReadAllText("index.html"));
});