Установить страницу по умолчанию в Asp.net

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

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

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

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

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

если вы знаете лучшее решение, Пожалуйста, дайте мне знать.

спасибо заранее.

P. S: причина, по которой я спрашиваю о Web.Config Я считаю Web.Config поможет нам пройти через это.

редактировать: Мне просто интересно, как команда Microsoft .NET забыла такую простую вещь:)

Edit:

это может другое решение на данный момент:

<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 ответов


при использовании 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


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

просто щелкните правой кнопкой мыши на странице, которую вы хотите быть стартовой страницей, и скажите "установить в качестве стартовой страницы".


по умолчанию карта.aspx as HttpHandler маршрут и перенаправление на CreateThings.aspx из HttpHandler.

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

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

кроме того, вы можете повторно использовать это для других по умолчанию.аспн.

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

Если вы используете страницу входа в ваш сайт зайдите на web.файл config

<authentication mode="Forms">
  <forms loginUrl="login.aspx" defaultUrl="index.aspx"  >
    </forms>
</authentication>

замените тег аутентификации на выше (где индекс.aspx будет вашей стартовой страницей)

и еще одна вещь напишите это в своей сети.файл 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>

можно переопределить параметр документа IIS по умолчанию с помощью интернета.config

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

или используя IIS, обратитесь к ссылке Для справки http://www.iis.net/configreference/system.webserver/defaultdocument


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

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

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

моя страница по умолчанию не была страницей 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 }
    );
}

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