web-dev-qa-db-fra.com

Comment définir la page par défaut dans ASP.NET?

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à:

  1. Mettez cette ligne de code => Response.Redirect("CreateThings.aspx") dans l'événement Default.aspxPage_Load, mais cette méthode est vraiment naïve.

  2. Nous pouvons utiliser IIS (configuration de page par défaut), mais je veux faire la même chose avec mon application ASP.NET.

  3. 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>
    
127
Tarik

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

237
David Glenn

Astuce n ° 84: Le saviez-vous… Comment définir une page de démarrage pour votre site Web dans Visual Web Developer?

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.

23
DavidTheDev

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
}
9

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>
4
Zooking

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

3
Mahesh Malpani

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>
3
JD-V

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.

1
david wendelken

Je préfère utiliser la méthode suivante:

system.webServer>
  <defaultDocument>
    <files>
      <clear />
      <add value="CreateThing.aspx" />
    </files>
  </defaultDocument>
</system.webServer>
1
encryptedwhisper