ASP.NET에서 기본 페이지를 설정하는 방법은 무엇입니까?


127

기본 페이지를 설정할 수있는 섹션이나 코드가 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>

답변:


239

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/


5
enabled = "true"속성을 defaultDocument 태그에 추가해야한다는 것을 발견했습니다. <defaultDocument enabled = "true">
— John Ferguson

@JohnFerguson 님이 응원합니다.
— Nick

2
이것은 Web.config 파일의 <configuration> 태그에 있어야합니다.
— Mikaël Mayer 2016 년

Default.aspx가 다른 폴더에있는 경우이 기능이 작동합니까? 예를 들면 : <add value = "/ NewSite / default.aspx"/>
— Apollo

IIS8에서도 작동합니다.
— WolFSharp

23

팁 # 84 : 알고 계십니까… Visual Web Developer에서 웹 사이트의 시작 페이지를 설정하는 방법은 무엇입니까?

시작 페이지가 될 페이지를 마우스 오른쪽 버튼으로 클릭하고 "시작 페이지로 설정"이라고 말합니다.

Adam Tuliper-MSFT의 아래 의견에서 언급했듯이 이는 배포가 아닌 디버깅에만 작동합니다.


1
흠. 로컬로 작동하지만 Azure에 배포 한 후에는 작동하지 않습니다.
— Vivek Maharajh 2016 년

받아 들여진 대답은 효과가 없었지만 이것은 효과가있었습니다! 감사!
— jnel899

6
@vivekmaharajh 이것은 테스트 / 디버깅을위한 것이기 때문에 기본값이 아니 었습니다.이 기술은 웹 서버만을 개발 환경으로 구성하지 않습니다.
— Adam Tuliper-MSFT

사용자가 디렉토리 자체에 액세스 할 때 경로 재 지정에 도움이되지 않습니다.
— 말콤 살바도르

9

default.aspx를 HttpHandler 경로 로 매핑 하고 HttpHandler 내에서 CreateThings.aspx로 리디렉션합니다.

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

Default.aspx가 실제로 응용 프로그램 루트에 존재하지 않는지 확인하십시오 . 물리적으로 존재하는 경우 HttpHandler는 실행할 기회가 없습니다. 실제 파일은 HttpHandler 맵핑을 대체합니다.

또한 default.aspx 이외의 다른 페이지에서도이를 재사용 할 수 있습니다.

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

// App_Code의 //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
}

따라서 요청이 발생할 때 Default.aspx핸들러는 요청을로 리디렉션합니다 CreateThing.aspx. 일반적인 해결책처럼 보입니다. 감사합니다.
— Tarik

그러나 HttpHandler 오염이 발생합니까?
— Tarik

편집 한 후에는 다음과 같이 말해야합니다. 간단한 것 같아요 Application.Run(new Form()1):)
— Tarik

@Arron : HttpHandler다양한 요청에 맞게 구성 할 수있는 사용자 지정 구성 섹션을 언제든지 만들 수 있습니다 . 모든 * .aspx 요청을 포착하고 요청이 구성된 URL과 일치하는지 확인할 수도 있습니다. 그렇지 않으면 그냥 통과하십시오.
— Robert Koritnik 2009

4

양식 인증을 사용하는 경우 아래 코드를 시도 할 수 있습니다.

<authentication mode="Forms">
<forms name=".FORM" loginUrl="Login.aspx" defaultUrl="CreateThings.aspx" protection="All" timeout="30" path="/"> 
</forms>
</authentication>

양식 인증을 사용하려면 MemberShip 또는 물건 제공자를 사용해야합니까? Windows 대신 폼으로 인증 모드를 선택하면이 코드가 제대로 작동합니다.
— Tarik

나는 이것이 해결책에 달려 있다고 말하고 싶다. 다른 사용자 프로필을 가진보다 복잡한 솔루션이 필요한 경우 MembershipProviders를 이용하십시오. 그러나보다 간단한 설정 인 경우 <allow users = ""/> 및 <deny users = ""/>를 사용할 수 있습니다.
— Zooking

3

웹 사이트에서 로그인 페이지를 사용하는 경우 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

다음 방법을 선호합니다.

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

1

위의 모든 솔루션을 수행했지만 작동하지 않았습니다.

내 기본 페이지는 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 }
    );
}

이것이 누군가에게 도움이되기를 바랍니다. 답을 찾는 데는 시간이 걸렸습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.