Как установить страницу по умолчанию в ASP.NET? - PullRequest
126 голосов
/ 16 декабря 2009

Есть ли какой-либо раздел или код, который позволяет нам установить страницу по умолчанию в web.config?

Например, когда люди впервые посещают мой сайт, я хочу, чтобы они увидели CreateThing.aspx, а не Default.aspx.

Решения, которые я уже знаю:

  1. Поместите эту строку кода => Response.Redirect("CreateThings.aspx") в Default.aspx Page_Load событие, но этот метод действительно наивен.

  2. Мы можем использовать IIS (конфигурация страницы по умолчанию), но я хочу сделать то же самое в моем приложении ASP.NET.

  3. На данный момент это может быть другое решение:

    <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>
    

Ответы [ 8 ]

236 голосов
/ 16 декабря 2009

Если вы используете IIS 7 или IIS 7.5, вы можете использовать

<system.webServer>
  <defaultDocument>
    <files>
      <clear />
      <add value="CreateThing.aspx" />
    </files>
  </defaultDocument>
</system.webServer>

http://www.iis.net/ConfigReference/system.webServer/defaultDocument

23 голосов
/ 13 ноября 2013

Совет № 84: Знаете ли вы ... Как настроить стартовую страницу для вашего веб-сайта в Visual Web Developer?

Просто щелкните правой кнопкой мыши на странице, которую вы хотите сделать стартовой, и скажите «Сделать стартовой страницей».

Как отмечено в комментарии ниже Адама Тулипера - MSFT, это работает только для отладки, а не для развертывания.

9 голосов
/ 16 декабря 2009

Отобразить default.aspx как HttpHandler маршрут и перенаправить на CreateThings.aspx изнутри HttpHandler.

<add verb="GET" path="default.aspx" type="RedirectHandler"/>

Убедитесь, что Default.aspx не существует физически у вашего приложения root . Если он существует физически HttpHandler не будет дано ни одного шанс выполнить. Физический файл переопределяет отображение HttpHandler.

Более того, вы можете повторно использовать это для страниц, отличных от default.aspx.

<add verb="GET" path="index.aspx" type="RedirectHandler"/>

// RedirectHandler.cs в вашем коде приложения

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 голосов
/ 16 декабря 2009

Если вы используете аутентификацию по формам, вы можете попробовать код ниже:

<authentication mode="Forms">
<forms name=".FORM" loginUrl="Login.aspx" defaultUrl="CreateThings.aspx" protection="All" timeout="30" path="/"> 
</forms>
</authentication>
3 голосов
/ 11 ноября 2014

Вы можете переопределить настройки документа 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

3 голосов
/ 22 сентября 2014

если вы используете страницу входа на своем веб-сайте, перейдите в файл 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>
1 голос
/ 31 марта 2017

Я выполнил все вышеперечисленные решения, но это не сработало.

Моя страница по умолчанию не была страницей aspx, это была HTML-страница.

Эта статья решила проблему. https://weblog.west -wind.com / сообщений / 2013 / Август / 15 / МИС-умолчанию-документы-против-САШ-MVC-маршруты

По сути, в моем файле \ 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 }
    );
}

Надеюсь, это кому-нибудь поможет, мне понадобилось много времени, чтобы найти ответ.

1 голос
/ 04 августа 2016

Я предпочитаю использовать следующий метод:

system.webServer>
  <defaultDocument>
    <files>
      <clear />
      <add value="CreateThing.aspx" />
    </files>
  </defaultDocument>
</system.webServer>
...