【问题标题】:Disable all server routing except for api calls in asp.net禁用除asp.net中的api调用之外的所有服务器路由
【发布时间】:2017-04-08 12:38:52
【问题描述】:
我使用 ASP.net 和 webapi 创建了一个 angular2 项目。我已经正确设置并正常工作,但是当我在 angular2 中路由时,例如:“localhost:1234/login”,页面源显示错误:
HTTP 错误 404.0 - 未找到
这显然是因为服务器路由找不到任何路径。我的问题是:有什么方法可以禁用服务器的所有路由,除非我正在执行如下调用:“localhost:1234/api/login”,因为这需要向 webapi 控制器发出服务器请求,该控制器将返回JSON。我希望 angular2 处理所有形式的路由。而服务器只是为了处理被推出的数据。
提前谢谢你
【问题讨论】:
标签:
asp.net
angular
asp.net-web-api
routing
angular2-routing
【解决方案1】:
如果 Angular 通过使用 API 生成视图,这应该不是问题。如果希望服务器为 Angular 调用的路由提供 HTML,那么它需要配置等效的路由。
【解决方案2】:
是的,您可以在您的 startup.cs 类中执行此操作。
您需要以某种方式配置 API 调用的方式,并重定向到您的 index.html,否则如下所示:
app.UseMvc(r =>
{
r.MapRoute(
name: "default",
template: "{controller}/{path?}/{action}/{id?}",
defaults: new { controller = "Home", action = "Index" }
);
r.MapSpaFallbackRoute(
name: "spa-fallback",
defaults: new { controller = "Home", action = "Index" }
);
});