with started route net mvc maphttproute asp asp.net-mvc-4 asp.net-mvc-areas attributerouting asp.net-web-api-helppages

asp.net mvc 4 - started - Página de inicio predeterminada de las páginas de ayuda de ASP.NET?



web api in asp net (2)

Quiero ir a http://myserver y poder obtener las páginas de ayuda como la página de inicio predeterminada, por lo que lo primero que un invitado debe ver en http://myserver es la página de ayuda.

Tengo una ruta predeterminada configurada así:

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 } ); }

Luego tengo configurado el registro de mi Área de Página de Ayuda de esta manera:

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); }

Cuando cambio el controller de RouteConfig a "Help" , obtengo:

La vista ''Índice'' o su maestro no se encontró o el motor de vista no admite las ubicaciones buscadas

Cuando cambio la ruta de la página de ayuda a "{controller}/{action}/{apiId}" mis AttributeRoutes dejan de funcionar.

¿Hay alguna manera fácil de hacer que las páginas de ayuda de ASP.NET tengan una página de inicio predeterminada?


Lo logré con la siguiente RouteConfig. También estoy usando las páginas de ayuda de ASP.Net para generar automáticamente mi documentación a partir de los comentarios XML en línea:

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" }); } }

También debo mencionar que no tengo ningún otro enrutamiento en esta clase ya que estoy usando Attribute Routing en los métodos API de forma individual.


Para aquellos que buscan dónde agregar la ruta, con la versión actual de WebApi y del paquete NuGet, debe buscar el archivo llamado "HelpPageAreaRegistration" en la carpeta Área agregada por NuGet.

Aquí está el mío una vez que fue codificado para tener la página de ayuda con WebApi tiene una página web predeterminada.

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); } }