2009-07-14 8 views
25

Quando creo ed eseguo la mia applicazione ottengo una lista di directory nel browser (accade anche per le sottocartelle) e devo fare clic su Indice. aspx. Mi sta facendo impazzireImpostazione della pagina predefinita per la configurazione del server ASP.NET (Visual Studio)

Visual Studio 2008 ASP.NET Development Server 9.0.0.0

+1

Questa stessa domanda (domanda dopo questo uno) compare anche, con una risposta diversa, [qui] (http : //stackoverflow.com/questions/3398565/change-default-default-aspx-to-index-aspx-on-visual-studio-2010) –

+0

Consultare la risposta di @Philippe Leybaert che dice "Vai alla pagina delle proprietà del progetto, seleziona la scheda "Web" " – Lijo

risposta

20

Il server Web incorporato è cablato per utilizzare Default.aspx come pagina predefinita.

Il progetto deve avere atleast un Default.aspx file vuoto per superare il Directory Listing problema per Global.asax.

:)

Una volta aggiunto il file vuoto tutte le richieste possono essere gestiti in un unico luogo.

public class Global : System.Web.HttpApplication 
{ 
    protected void Application_BeginRequest(object sender, EventArgs e) 
    { 
     this.Response.Write("[email protected] " + this.Request.Path + "?" + this.Request.QueryString); 
     this.Response.StatusCode = 200; 
     this.Response.ContentType = "text/plain"; 

     this.Response.End(); 
    } 
} 
10

Vai alla pagina delle proprietà del progetto, selezionare la scheda "Web" e in alto (nella sezione "Azione di avvio"), inserire il nome della pagina nella casella "Pagina specifica". Nel tuo caso index.aspx

+3

Sì, che funziona per la pagina iniziale, ma quando sfoglio qualsiasi cosa in una sottocartella ottengo di nuovo un elenco di cartelle. –

+0

Non è possibile specificare una pagina predefinita nel server Web interno di Visual Studio (Cassini) –

+0

Funziona come previsto per molti altri sviluppatori nel mio gruppo –

36

Fai clic con il pulsante destro del mouse sulla pagina Web che desideri utilizzare come pagina predefinita e scegli "Imposta come pagina iniziale" ogni volta che esegui l'applicazione Web da Visual Studio, si aprirà la pagina selezionata .

+6

Yup, che funziona per la pagina iniziale, ma quando cerco qualcosa in una sottocartella ottengo un elenco di cartelle di nuovo. –

0

Se si sta utilizzando IIS anziché il server webdev VS, assicurarsi che Index.aspx sia uno dei file predefiniti e che la navigazione nell'elenco sia disattivata.

+0

No, sto usando il server webdev VS. –

8

Simile a zproxy di risposta di cui sopra ho usato il codice folowing nelle Gloabal.asax.cs per raggiungere questo obiettivo:

public class Global : System.Web.HttpApplication 
{ 
    protected void Application_BeginRequest(object sender, EventArgs e) 
    { 
     if (Request.Url.AbsolutePath.EndsWith("/")) 
     { 
      Server.Transfer(Request.Url.AbsolutePath + "index.aspx"); 
     } 
    } 
} 
1
public class Global : System.Web.HttpApplication 
{ 
    protected void Application_BeginRequest(object sender, EventArgs e) 
    { 
     if (Request.Url.AbsolutePath.EndsWith("/")) 
     { 
      Server.Transfer("~/index.aspx"); 
     } 
    } 
} 
+1

Questa risposta non è corretta. Se l'utente visita "site.com/account/", l'utente verrà reindirizzato a "/index.aspx", invece di "/account/index.aspx" –

+0

"L'imitazione è la forma più sincera di adulazione". - Charles Caleb Colton –

0

Questo un metodo per Pubblicato Soluzione per mostrare specifica pagina su avviare.

Qui è l'esempio percorso di reindirizzare a pagina specifica ...

public class RouteConfig 
{ 
    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 }, 
      namespaces: new[] { "YourSolutionName.Controllers" } 
     ); 
    } 
} 

per impostazione predefinita metodo Indice Home controller viene eseguito quando viene avviata l'applicazione, Qui puoi definire la tua.

Nota: Sto usando Visual Studio 2013 e "YourSolutionName" è quello di cambiato al progetto Nome ..

Problemi correlati