Есть ли любой раздел или код, который позволяет нам устанавливать страницу по умолчанию в web.config
?
Например, когда люди сначала посещают мой веб-сайт, я хочу, чтобы они видели CreateThing.aspx
вместо Default.aspx
.
Решения я уже знаю:
Поместите эту строку кода => Response.Redirect("CreateThings.aspx")
в Default.aspx
Page_Load
событие, но этот метод действительно наивно.
Мы можем использовать IIS (конфигурация страницы по умолчанию), но я хочу переделать то же самое на своем приложении ASP.NET.
Это могло быть другим решением на данный момент:
<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>
If using IIS 7 or IIS 7.5 you can use
<system.webServer>
<defaultDocument>
<files>
<clear />
<add value="CreateThing.aspx" />
</files>
</defaultDocument>
</system.webServer>
https://docs.microsoft.com/en-us/iis/configuration/system.webServer/defaultDocument/
Сопоставьте default.aspx как маршрут HttpHandler и перенаправьте на CreateThings.aspx из HttpHandler.
<add verb="GET" path="default.aspx" type="RedirectHandler"/>
Убедитесь, что Default.aspx не существует физически в корне вашего приложения . Если он существует физически, HttpHandler не получит никаких шанс выполнить. Физический файл переопределяет отображение HttpHandler.
Более того, вы можете повторно использовать это для страниц, отличных от default.aspx.
<add verb="GET" path="index.aspx" type="RedirectHandler"/>
// RedirectHandler.cs в вашем 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
}
Если вы используете аутентификацию с помощью форм, вы можете попробовать следующий код:
<authentication mode="Forms">
<forms name=".FORM" loginUrl="Login.aspx" defaultUrl="CreateThings.aspx" protection="All" timeout="30" path="/">
</forms>
</authentication>