Existe-t-il une section ou un code nous permettant de définir la page par défaut dans web.config
?
Par exemple, lorsque les internautes visitent mon site Web pour la première fois, je souhaite qu’ils voient CreateThing.aspx
plutôt que Default.aspx
.
Les solutions que je connais déjà:
Mettez cette ligne de code => Response.Redirect("CreateThings.aspx")
dans l'événement Default.aspx
Page_Load
, mais cette méthode est vraiment naïve.
Nous pouvons utiliser IIS (configuration de page par défaut), mais je veux faire la même chose avec mon application ASP.NET.
Cela pourrait être une autre solution pour le moment:
<defaultDocument>
<files>
<clear />
<add value="Default.aspx" />
<add value="Default.htm" />
<add value="Default.asp" />
<add value="index.htm" />
<add value="index.html" />
<add value="iisstart.htm" />
</files>
</defaultDocument>
Si vous utilisez IIS 7 ou IIS 7.5, vous pouvez utiliser
<system.webServer>
<defaultDocument>
<files>
<clear />
<add value="CreateThing.aspx" />
</files>
</defaultDocument>
</system.webServer>
http://www.iis.net/ConfigReference/system.webServer/defaultDocument
Faites simplement un clic droit sur la page que vous souhaitez utiliser comme page de démarrage et dites "Définir comme page de démarrage".
Comme indiqué dans le commentaire ci-dessous par Adam Tuliper - MSFT, cela ne fonctionne que pour le débogage, pas pour le déploiement.
Mappez default.aspx en tant que HttpHandler et redirigez-vous vers CreateThings.aspx à partir de HttpHandler.
<add verb="GET" path="default.aspx" type="RedirectHandler"/>
Assurez-vous que Default.aspx n'existe pas physiquement à la racine de votre application. S'il existe physiquement, HttpHandler n'aura aucune chance de s'exécuter. Un fichier physique remplace le mappage HttpHandler.
De plus, vous pouvez le réutiliser pour des pages autres que default.aspx.
<add verb="GET" path="index.aspx" type="RedirectHandler"/>
//RedirectHandler.cs dans votre App_Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
/// <summary>
/// Summary description for RedirectHandler
/// </summary>
public class RedirectHandler : IHttpHandler
{
public RedirectHandler()
{
//
// TODO: Add constructor logic here
//
}
#region IHttpHandler Members
public bool IsReusable
{
get { return true; }
}
public void ProcessRequest(HttpContext context)
{
context.Response.Redirect("CreateThings.aspx");
context.Response.End();
}
#endregion
}
Si vous utilisez l'authentification par formulaires, vous pouvez essayer le code ci-dessous:
<authentication mode="Forms">
<forms name=".FORM" loginUrl="Login.aspx" defaultUrl="CreateThings.aspx" protection="All" timeout="30" path="/">
</forms>
</authentication>
Vous pouvez remplacer le paramètre de document par défaut IIS à l'aide du fichier web.config.
<system.webServer>
<defaultDocument>
<files>
<clear />
<add value="DefaultPageToBeSet.aspx" />
</files>
</defaultDocument>
</system.webServer>
Ou en utilisant IIS, consultez le lien pour référence http://www.iis.net/configreference/system.webserver/defaultdocument
si vous utilisez la page de connexion de votre site Web, accédez au fichier web.config.
<authentication mode="Forms">
<forms loginUrl="login.aspx" defaultUrl="index.aspx" >
</forms>
</authentication>
remplacez votre tag d'authentification par le dessus (où index.aspx sera votre page de démarrage)
et une dernière chose à écrire dans votre fichier web.config
<configuration>
<system.webServer>
<defaultDocument>
<files>
<clear />
<add value="index.aspx" />
</files>
</defaultDocument>
</system.webServer>
<location path="index.aspx">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
</configuration>
J'avais fait toutes les solutions ci-dessus mais cela n'a pas fonctionné.
Ma page par défaut n'était pas une page aspx, c'était une page html.
Cet article a résolu le problème. https://weblog.west-wind.com/posts/2013/aug/15/iis-default-documents-vs-aspnet-mvc-routes
En gros, dans mon fichier\App_Start\RouteConfig.cs, je devais ajouter une ligne:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute(""); // This was the line I had to add here!
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
J'espère que cela aide quelqu'un, il m'a fallu du temps pour trouver la réponse.
Je préfère utiliser la méthode suivante:
system.webServer>
<defaultDocument>
<files>
<clear />
<add value="CreateThing.aspx" />
</files>
</defaultDocument>
</system.webServer>