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 :
-
mettez cette ligne de code = >
Response.Redirect("CreateThings.aspx")
dansDefault.aspx
Page_Load
événement 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 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>
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
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".
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
}
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>
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>
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
je préfère utiliser la méthode suivante:
system.webServer>
<defaultDocument>
<files>
<clear />
<add value="CreateThing.aspx" />
</files>
</defaultDocument>
</system.webServer>
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.