在Asp.net中设置默认页面

Tar*_*rik 127 asp.net iis-7 web-config

是否有任何允许我们设置默认页面的部分或代码web.config

例如,当人们第一次访问我的网站时,我希望他们看到CreateThing.aspx而不是Default.aspx.

我知道的解决方案:

  1. 把这行代码=> Response.Redirect("CreateThings.aspx")放在Default.aspx Page_Load事件中,但这个方法真的很幼稚.

  2. 我们可以使用web.config(默认页面配置),但我想在Asp.NET应用程序上做同样的事情.

如果您知道更好的解决方案,请告诉我.

提前致谢.

PS:我之所以要问的CreateThing.aspx是我相信Default.aspx会帮助我们解决这个问题.

编辑:我只是想知道Microsoft .NET团队是如何忘记这么简单的事:)

编辑:

这可能是现在的另一种解决方案:

<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>
Run Code Online (Sandbox Code Playgroud)

Dav*_*enn 238

如果使用IIS 7或IIS 7.5,则可以使用

<system.webServer>
    <defaultDocument>
        <files>
            <clear />
            <add value="CreateThing.aspx" />
        </files>
    </defaultDocument>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

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

  • 我发现我需要将enabled ="true"属性添加到defaultDocument标记,即:<defaultDocument enabled ="true"> (5认同)
  • 这将放在Web.config文件的<configuration>标记中. (2认同)

Dav*_*Dev 23

提示#84:您知道吗......如何在Visual Web Developer中为您的网站设置起始页?

只需右键单击要作为起始页面的页面,然后说"设置为起始页面".

正如Adam Tuliper - MSFT下面的评论中所指出的,这仅适用于调试,而不适用于部署.

  • @vivekmaharajh它不是默认值,因为它用于测试/调试 - 这种技术不会仅为您的Web服务器配置开发环境. (6认同)

thi*_*eek 9

将default.aspx映射为HttpHandler路由,并从HttpHandler中重定向到CreateThings.aspx.

<add verb="GET" path="default.aspx" type="RedirectHandler"/>
Run Code Online (Sandbox Code Playgroud)

确保Default.aspx在您的应用程序根目录中不存在.如果它在物理上存在,HttpHandler将不会被给予任何执行机会.物理文件覆盖HttpHandler映射.

此外,您可以将其重复用于default.aspx以外的页面.

<add verb="GET" path="index.aspx" type="RedirectHandler"/>
Run Code Online (Sandbox Code Playgroud)

App_Code中的// RededHandler.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
}
Run Code Online (Sandbox Code Playgroud)