Définir la Page par défaut dans Asp.net

y a-t-il une section ou un code qui nous permette de définir la page par défaut dans web.config ?

par exemple, quand les gens visitent mon site web pour la première fois, je veux qu'ils voient CreateThing.aspx plutôt que Default.aspx .

Les solutions que je connais :

  1. mettez cette ligne de code = > Response.Redirect("CreateThings.aspx") dans Default.aspx Page_Load événement 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 sur Asp.NET application.

Si vous connaissez une meilleure solution, s'il vous plaît laissez-moi savoir.

Merci d'avance.

P. S : la raison pour laquelle je demande à propos de Web.Config est que je crois que Web.Config nous aiderait à travers ceci.

Modifier : Je me demande juste comment Microsoft. NET team a oublié une chose si simple:)

Edit :

ce pourrait être une autre solution pour l'instant:

<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>
124
demandé sur Owen Blacker 2009-12-16 11:04:07

8 réponses

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

234
répondu David Glenn 2012-10-09 10:52:13

Conseil n ° 84: saviez-vous... comment définir une page de départ pour votre Site Web dans Visual Web Developer?

cliquez simplement avec le bouton droit de la souris sur la page que vous voulez créer et dites"Définir comme page de départ".

24
répondu DavidTheDev 2014-03-19 16:45:54

Carte par défaut.aspx comme HttpHandler route et rediriger vers CreateThings.aspx de L'intérieur du HttpHandler.

<add verb="GET" path="default.aspx" type="RedirectHandler"/>

assurez-vous par défaut.aspx n'existe pas physiquement à la racine de votre application . Si elle existe physiquement l' HttpHandler ne sera pas chance de s'exécuter. Fichier physique remplace HttpHandler mapping.

de plus, vous pouvez réutilisez ceci pour les pages autres que par défaut.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
répondu this. __curious_geek 2009-12-16 08:15:13

si vous utilisez l'authentification forms, 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
répondu Zooking 2009-12-16 08:09:54

si vous utilisez la page de connexion de votre site Web, allez sur le web.fichier de configuration

<authentication mode="Forms">
  <forms loginUrl="login.aspx" defaultUrl="index.aspx"  >
    </forms>
</authentication>

remplacez votre étiquette d'authentification ci-dessus (où index.aspx sera votre page de démarrage)

et une autre chose écrivez ceci dans votre web.fichier de configuration à l'intérieur de

<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
répondu JD-V 2014-09-22 07:34:11

vous pouvez outrepasser le réglage par défaut du document IIS en utilisant le web.config

<system.webServer>
    <defaultDocument>
      <files>
        <clear />
        <add value="DefaultPageToBeSet.aspx" />
      </files>
    </defaultDocument>
  </system.webServer>

ou en utilisant L'IIS, référez le lien pour la référence http://www.iis.net/configreference/system.webserver/defaultdocument

3
répondu Mahesh Malpani 2014-12-01 04:58:14

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

system.webServer>
  <defaultDocument>
    <files>
      <clear />
      <add value="CreateThing.aspx" />
    </files>
  </defaultDocument>
</system.webServer>
1
répondu encryptedwhisper 2016-08-04 16:26:06

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 \App_Start\RouteConfig.fichier cs, j'ai dû 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 }
    );
}

Espérons que cela aide quelqu'un, il m'a fallu un bon moment pour trouver la réponse.

1
répondu david wendelken 2017-03-31 13:13:01