2010-11-25 7 views
0

Beim Erstellen einer Webanwendung, die keine "~/default.aspx" -Seite hat, möchten wir die Startseite als "~/Pages/MyStartPage.aspx" festlegen "..net Web Application set Startseite nach Code

Ich weiß, dass die Startseite Eigenschaft kann in der II festgelegt werden, oder wenn wir zu Project- gehen> Einstellungen-> web-> und stellen Sie die Start Aktion „Specific Seite“ = Pages/MyStartPage.aspx

Diese Optionen sind für mich nicht geeignet, da ich es per Code machen muss.

Gibt es eine Klasse oder Einstellung in web.config, die ich ändern kann, die das für mich tut?

Danke, Maxim

+0

Beachten Sie, dass die zweite dieser Optionen, Projekt-> Eigenschaften-> Web, nur die Startseite Ihrer Debug-Sitzung ist - sie ist keine Eigenschaft der Site oder des Debug-Webservers. – Rup

+0

Sie haben unten gesagt, dass Sie die Dokumentenliste von IIS im Code neu konfigurieren möchten. Welche Version von IIS? Der Metabasiszugriffsmechanismus wurde in IIS 7 geändert. Wo möchten Sie diesen Code ändern - von Ihrem Websitecode? Auf welchem ​​Benutzer wird Ihre Site ausgeführt, hat sie definitiv die Berechtigung zum Bearbeiten der IIS-Metabasis? – Rup

Antwort

0

Ich denke, die einzige Möglichkeit ist eine triviale Default.aspx-Seite zu erstellen, die eine Response.Redirect auf der anderen Seite erzeugt.

Das Problem ist, dass IIS Ihre Anwendung nicht fragt, was die Start-URL sein soll; Stattdessen versucht es das erste in seiner Liste gegen Ihre Anwendung. Ich denke also nicht, dass dies in Ihrer Anwendung konfiguriert werden kann.

Wenn Ihre Site so eingerichtet ist, dass alle Anforderungen an ASP.NET übergeben werden, unabhängig davon, ob die Datei auf dem Datenträger vorhanden ist (dh eine Platzhalterzuordnung in IIS), können Sie wahrscheinlich die ursprüngliche ~/Anforderung in global.asax und route abfangen das im Code dort. Aber wenn Sie das Standarddokument nicht selbst in IIS konfigurieren können, würde ich bezweifeln, dass Sie das auch einrichten können - und das Einrichten einer Platzhalterzuordnung ist meiner Meinung nach eine viel zu allgemein störende Lösung, um diesen einen Fall trotzdem zu implementieren.

+0

Sind Sie sicher, dass es keine Möglichkeit gibt, dieser von IIS verwalteten Liste einen Wert hinzuzufügen? Das ist, was ich suche ... – Maxim

+0

Oh, möchten Sie die IIS-Konfiguration programmgesteuert ändern? Entschuldigung, ich hätte es falsch verstanden - ich hatte angenommen, Sie hätten keine Berechtigung, Ihre IIS-Konfiguration bei Ihrem Hosting-Provider oder ähnlichem zu ändern. Ich werde das Q kommentieren, da dies allgemeiner ist. – Rup

0

Wie wäre es, dies in Default.aspx zu setzen?

protected void Page_Load(object sender, EventArgs e) 
{ 
    this.Response.Redirect("~/Pages/MyStartPage.aspx"); 
} 

Oder verwenden Sie stattdessen Server.Transfer, wenn Sie bevorzugen. Sie können sogar eine ausgeklügelte Logik verwenden, um Leute an verschiedene Orte zu schicken, wenn Ihr Herz es wünscht.

+0

Ich habe keine Default.aspx-Seite, und ich möchte keine erstellen, deren einziger Zweck es ist, umzuleiten. Gibt es eine andere Option? – Maxim

+0

Nein. Erstellen Sie einfach eine; Es ist die einfachste und zuverlässigste Methode, abgesehen von der Aktualisierung der IIS-Konfiguration, die Sie bereits beendet haben. – batwad