这是一个MVC 6/WebApi应用程序。我试图在前端使用AngularJS在后端使用WebApi。AngularJS with MVC 6
我有两个静态文件:(有最终将更多的静态文件)的index.html和login.html的
我的角度应用程序包含在index.html的,而视图(如/登录)是从静态文件(即login.html)加载的。
如果我去我的根URL,index.html加载得很好。但是,如果我去/登录,我收到一个404页面未找到。
现在,让我们说,我不要想要让我的应用程序与一堆控制器和视图停滞不前,因为它不必简单地提供静态文件。这太过分了。
我有我的路由设置服务于API调用(即〜/ api /无论)。我如何让MVC 6忽略所有其他路线?
仅供参考,它也似乎MapPageRoute已弃用在MVC 6?
编辑:我做真正得到它的工作
一件事是添加自己的中间件拦截请求。下面的代码毕竟是在配置方法我的默认中间件补充说:
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"));
});
这多少显得有点,它只是一个黑客。它所做的只是允许任何以“/ api”开始的请求(然后由MVC中间件拾取),但任何其他呼叫都会以index.html的内容提供。因此,如果我请求的URL是“/ login”,则提供文件,,然后角度查看路径并将文件加载到视图中。
其他建议?
您使用什么路由?内部或ui路由器? – tuckerjt07
我正在使用angular的ui路由器。另外,重新检查这个问题......我添加了一个可以工作的黑客,但是寻找替代品。 – a11smiles
https:// github。com/angular-ui/ui-router/wiki/Frequently-Questions-Questions#如何配置你的服务器到工作与html5mode – Claies