重定向到Angular SPA MVC5 IIS应用程序

时间:2014-04-14 23:23:25

标签: asp.net-web-api iis-7.5 asp.net-mvc-5

我正在尝试将我的MVC5 / WebAPI2 REST服务配置为重定向到位于IIS上同一站点中的子文件夹上的单独Angular SPA。

我尝试在网络文件夹的根目录中添加Angular Index.html,但这不起作用。我可以通过转到

按名称访问该文件
http://<hostname>/index.html

但是,我显然不想要文件名。我只想要默认的根(/)加载角度应用程序。目标是这样的 -

http://<hostname> --> Angular app (angular router takes over for it's internal routes
http://<hostname>/api --> The REST service 

2 个答案:

答案 0 :(得分:0)

您可以在RouteConfig中添加新路线,将index.html映射到默认的mvc入口点。

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.RouteExistingFiles = true;

        routes.MapRoute(
            name: "Home",
            url: "index.html",
            defaults: new { controller = "Home", action = "Index", page = UrlParameter.Optional }
        );
    }
}

答案 1 :(得分:0)

基于@Cyber​​maxs的说法,因为我要完全没有Razor视图的SPA(除了帮助区域),这对我有用 - (基本上是cybermaxs,但是我必须注释掉默认的mvc)路由)。

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.RouteExistingFiles = true;
        routes.MapRoute(
         name: "Home",
         url: "index.html",
         defaults: new { controller = "Home", action = "Index", page = UrlParameter.Optional }
        );

       /* routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Index", action = "Index", id = UrlParameter.Optional }
        );*/




        //point people to SPA
        routes.IgnoreRoute("apps");
        routes.IgnoreRoute("");