Czy jest jakaś sekcja lub kod, który pozwala nam ustawić domyślną stronę web.config
?
Na przykład, kiedy ludzie po raz pierwszy odwiedzają moją witrynę, chcę, żeby to zobaczyli, CreateThing.aspx
a nie Default.aspx
.
Rozwiązania, które już znam:
Umieść ten wiersz kodu =>
Response.Redirect("CreateThings.aspx")
wDefault.aspx
Page_Load
zdarzeniu, ale ta metoda jest naprawdę naiwna.Możemy używać IIS (domyślna konfiguracja strony), ale chcę zrobić to samo w mojej aplikacji ASP.NET.
Na razie może to być inne rozwiązanie:
<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>
asp.net
iis-7
web-config
Tarik
źródło
źródło
Wskazówka # 84: Czy wiesz, że… Jak ustawić stronę początkową dla swojej witryny sieci Web w programie Visual Web Developer?
Po prostu kliknij prawym przyciskiem myszy stronę, która ma być stroną startową i powiedz „ustaw jako stronę startową”.
Jak zauważył w poniższym komentarzu Adama Tulipera - MSFT, działa to tylko w przypadku debugowania, a nie wdrażania.
źródło
Zamapuj default.aspx jako trasę HttpHandler i przekieruj do CreateThings.aspx z poziomu HttpHandler.
<add verb="GET" path="default.aspx" type="RedirectHandler"/>
Ponadto możesz ponownie użyć tego dla stron innych niż default.aspx.
<add verb="GET" path="index.aspx" type="RedirectHandler"/>
//RedirectHandler.cs w swoim 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 }
źródło
Default.aspx
, program obsługi przekieruje żądanie doCreateThing.aspx
. Wygląda na ogólne rozwiązanie. Dziękuję Ci.Application.Run(new Form()1)
:)HttpHandler
dla różnych różnych żądań. Możesz także przechwycić wszystkie żądania * .aspx i sprawdzić, czy żądanie pasuje do któregokolwiek ze skonfigurowanych adresów URL. W przeciwnym razie po prostu przepuść.Jeśli korzystasz z uwierzytelniania za pomocą formularzy, możesz wypróbować poniższy kod:
<authentication mode="Forms"> <forms name=".FORM" loginUrl="Login.aspx" defaultUrl="CreateThings.aspx" protection="All" timeout="30" path="/"> </forms> </authentication>
źródło
jeśli korzystasz ze strony logowania w swojej witrynie, przejdź do pliku web.config
<authentication mode="Forms"> <forms loginUrl="login.aspx" defaultUrl="index.aspx" > </forms> </authentication>
zamień swój znacznik uwierzytelniający na powyższy (gdzie index.aspx będzie Twoją stroną startową)
i jeszcze jedno, zapisz to w swoim pliku web.config wewnątrz
<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>
źródło
Możesz zastąpić domyślne ustawienie dokumentu usług IIS przy użyciu pliku web.config
<system.webServer> <defaultDocument> <files> <clear /> <add value="DefaultPageToBeSet.aspx" /> </files> </defaultDocument> </system.webServer>
Lub korzystając z usług IIS, skorzystaj z łącza http://www.iis.net/configreference/system.webserver/defaultdocument
źródło
Wolę skorzystać z następującej metody:
system.webServer> <defaultDocument> <files> <clear /> <add value="CreateThing.aspx" /> </files> </defaultDocument> </system.webServer>
źródło
Zrobiłem wszystkie powyższe rozwiązania, ale nie zadziałało.
Moja strona domyślna nie była stroną aspx, była to strona html.
Ten artykuł rozwiązał problem. https://weblog.west-wind.com/posts/2013/aug/15/iis-default-documents-vs-aspnet-mvc-routes
Zasadniczo w moim pliku \ App_Start \ RouteConfig.cs musiałem dodać linię:
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 } ); }
Mam nadzieję, że to komuś pomoże. Znalezienie odpowiedzi zajęło mi sporo czasu.
źródło