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よろしくお願いします。
ニック

2
これは、Web.configファイルの<configuration>タグに配置されます。
ミカエルメイヤー2014

Default.aspxが別のフォルダーにある場合、これは機能しますか?例:<add value = "/ NewSite / default.aspx" />
Apollo

IIS8でも動作します。
WolFSharp 2015年

23

ヒント#84:ご存知ですか... Visual Web DeveloperでWebサイトのスタートページを設定する方法

開始ページにしたいページを右クリックして、「開始ページとして設定」と発声するだけです。

Adam Tuliper-MSFTによる以下のコメントで述べたように、これはデバッグではなく、展開では機能しません。


1
うーん。ローカルで動作しますが、azureにデプロイした後は動作しません。
Vivek Maharajh 2015年

受け入れられた答えは私にとってはうまくいきませんでしたが、これはうまくいきました!ありがとう!
jnel899 2015

6
@vivekmaharajhこれはテスト/デバッグ用であるため、デフォルトではありませんでした。この手法では、開発環境のみでWebサーバーを構成することはしません。
Adam Tuliper-MSFT 2016年

ユーザーがディレクトリ自体にアクセスするときのリダイレクトには役立ちません。
マルコムサルバドール

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 2009

3

Webサイトでログインページを使用している場合は、web.configファイルに移動します。

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

認証タグを上記に置き換えます(index.aspxが起動ページになります)

もう1つ、これを内部の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.