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.