c#:Asp.net WebApi到index.html的默认路由

时间:2016-07-02 23:13:54

标签: c# asp.net-web-api

我正在尝试创建一个Asp.net WebApi /单页面应用程序。如果没有给出路由,我希望我的服务器分配index.html。我希望它以正常的“{controller} / {id}”方式指定一个控制器。

我意识到我可以使用http://localhost:555/index.html访问我的索引页面。如何通过访问http://localhost:555来做同样的事情?

2 个答案:

答案 0 :(得分:7)

只需为您的WebApiConfig文件添加路径以获取索引页面。您的方法应如下所示:

    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // Attribute routing
            config.MapHttpAttributeRoutes();

            // Route to index.html
            config.Routes.MapHttpRoute(
                name: "Index",
                routeTemplate: "{id}.html",
                defaults: new {id = "index"});

            // Default route
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }
    }

答案 1 :(得分:1)

解决方案是创建一个空 DefaultRoute

// I think this passes control through before trying to use a Controller
routes.MapHttpRoute(
    "DefaultRoute", "");

routes.MapHttpRoute(
    "DefaultAPI",
    "{controller}/{id}",
    new { Controller = "Home", Id = RouteParameter.Optional });

另一个解决方案是将我的 WebApi 添加到'api'前面,这不完全是我想要的,但它是一个合适的解决方案。 Herman Guzman的回答显示了这一点,但不是他的回答。

// Default route
config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }