Как установить страницу по умолчанию в ASP.NET?
Есть ли какой-либо раздел или код, который позволяет нам установить страницу по умолчанию в 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>
Ответы
Ответ 1
Если вы используете IIS 7 или IIS 7.5, вы можете использовать
<system.webServer>
<defaultDocument>
<files>
<clear />
<add value="CreateThing.aspx" />
</files>
</defaultDocument>
</system.webServer>
https://docs.microsoft.com/en-us/iis/configuration/system.webServer/defaultDocument/
Ответ 2
Совет № 84. Знаете ли вы... Как настроить стартовую страницу для вашего веб-сайта в Visual Web Developer?
Просто щелкните правой кнопкой мыши на странице, которую вы хотите стать стартовой страницей, и скажите "Сделать стартовой страницей".
Как отмечено в комментарии ниже Адама Тулипера - MSFT, это работает только для отладки, а не для развертывания.
Ответ 3
Перечислите 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
}
Ответ 4
Если вы используете проверку подлинности форм, вы можете попробовать код ниже:
<authentication mode="Forms">
<forms name=".FORM" loginUrl="Login.aspx" defaultUrl="CreateThings.aspx" protection="All" timeout="30" path="/">
</forms>
</authentication>
Ответ 5
если вы используете страницу входа на свой веб-сайт, перейдите в файл web.config
<authentication mode="Forms">
<forms loginUrl="login.aspx" defaultUrl="index.aspx" >
</forms>
</authentication>
замените свой тег аутентификации выше (где index.aspx будет вашей начальной страницей)
и еще одну вещь пишите это в свой файл web.config внутри
<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>
Ответ 6
Вы можете переопределить параметр документа IIS по умолчанию, используя web.config
<system.webServer>
<defaultDocument>
<files>
<clear />
<add value="DefaultPageToBeSet.aspx" />
</files>
</defaultDocument>
</system.webServer>
Или используя IIS, обратитесь к ссылке для ссылки http://www.iis.net/configreference/system.webserver/defaultdocument
Ответ 7
Я предпочитаю использовать следующий метод:
system.webServer>
<defaultDocument>
<files>
<clear />
<add value="CreateThing.aspx" />
</files>
</defaultDocument>
</system.webServer>
Ответ 8
Я выполнил все вышеупомянутые решения, но это не сработало.
Моя страница по умолчанию не была страницей aspx, это была страница html.
В этой статье решена проблема. https://weblog.west-wind.com/posts/2013/aug/15/iis-default-documents-vs-aspnet-mvc-routes
В основном, в моем \App_Start\RouteConfig.cs файле мне пришлось добавить строку:
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 }
);
}
Надеюсь, что это помогает кому-то, мне очень хорошо пришлось найти ответ.