这是一MVC 6/WebApi应用。我正在尝试在后端使用 WebApi,在前端使用 AngularJS。
我有两个静态文件:index.html 和 login.html
(最终将会有更多的静态文件。)
我的 Angular 应用程序包含在index.html 中,而视图(例如/login)是从静态文件(即login.html)加载的。
如果我转到我的根 URL,index.html 就可以正常加载。但是,如果我转到 /login,我会收到 404 页面未找到。
现在,可以说,我DO NOT想让我的应用程序陷入一堆控制器和视图的困境,因为没有必要简单地提供静态文件。这太过分了。
我设置了路由来服务 API 调用(即 ~/api/whatever)。如何让 MVC 6 忽略所有其他路由?
仅供参考,看来还地图页面路线在 MVC 6 中已弃用?
EDIT:
为了使其真正正常工作,我所做的一件事是添加我自己的中间件来拦截请求。下面的代码添加在我的所有默认中间件之后配置 method:
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"));
});
这看起来有点多,而且只是一个 hack。它所做的只是允许任何以“/api”开头的请求通过(然后由 MVC 中间件拾取),但任何其他调用都将使用索引.html。因此,如果我请求的 URL 是“/login”,则索引.html文件已送达,thenAngular 查看路线并加载登录.html文件进入视图。
还有其他建议吗?