Домашняя страница страниц справки ASP.NET по умолчанию?

Я хочу перейти на http://myserver и иметь возможность использовать страницы справки в качестве домашней страницы по умолчанию, поэтому первое, что должен увидеть гость http://myserver, - это страница справки.

У меня настроен маршрут по умолчанию следующим образом:

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

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

Затем я настроил регистрацию в области страницы справки следующим образом:

public override void RegisterArea(AreaRegistrationContext context)
{
    context.MapRoute(
        "HelpPage_Default",
        "doc/{action}/{apiId}",
        new { controller = "Help", action = "Index", apiId = UrlParameter.Optional });

    HelpPageConfig.Register(GlobalConfiguration.Configuration);
}

Когда я меняю controller в RouteConfig на "Help", я получаю:

Представление "Индекс" или его мастер не найдены, либо механизм представления не поддерживает искомые местоположения.

Когда я изменяю маршрут страницы справки на "{controller}/{action}/{apiId}", мои AttributeRoutes перестают работать.

Есть ли простой способ сделать страницу справки ASP.NET домашней страницей по умолчанию?




Ответы (2)


Я сделал это с помощью следующего RouteConfig. Я также использую страницы справки ASP.Net для автоматического создания документации из встроенных комментариев XML:

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

        // By default route the user to the Help area if accessing the base URI.
        routes.MapRoute(
            "Help Area",
            "",
            new { controller = "Help", action = "Index" }
        ).DataTokens = new RouteValueDictionary(new { area = "HelpPage" });
    }
}

Я также должен упомянуть, что у меня нет другой маршрутизации в этом классе, поскольку я использую маршрутизацию атрибутов для методов API индивидуально.

person jmsb    schedule 25.10.2013

Для тех, кто ищет, где добавить маршрут, с текущей версией WebApi и пакета NuGet вам необходимо найти файл с именем «HelpPageAreaRegistration» в папке Area, добавленной NuGet.

Вот мой, когда он был закодирован, чтобы на странице справки с WebApi была веб-страница по умолчанию.

public class HelpPageAreaRegistration : AreaRegistration
{
    public override string AreaName
    {
        get
        {
            return "HelpPage";
        }
    }

    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "HelpPage_Default",
            "Help/{action}/{apiId}",
            new { controller = "Help", action = "Index", apiId = UrlParameter.Optional });
        context.MapRoute(
            "Help Area",
            "",
            new { controller = "Help", action = "Index" }
            );
        HelpPageConfig.Register(GlobalConfiguration.Configuration);
    }
}
person Patrick Desjardins    schedule 20.06.2014