如何在 ASP.NET 中设置默认页?

是否有任何部分或代码允许我们在 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>
    
231431 次浏览

将 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"/>

在你的应用程式码中加入// 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
}

如果您使用表单身份验证,您可以尝试以下代码:

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

如果使用 IIS7或 IIS7.5,您可以使用

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

Https://learn.microsoft.com/en-us/iis/configuration/system.webserver/defaultdocument/

技巧 # 84: 您是否知道... 如何在 VisualWebDeveloper 中设置网站的起始页?

只需右键单击您想要成为开始页面的页面,并说“设置为开始页面”。

正如 Adam Tuliper-MSFT 在下面的评论中指出的那样,这只适用于调试,而不适用于部署。

如果您正在使用登录页面在您的网站转到 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>

可以使用 web.config 覆盖 IIS 默认文档设置

<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 页面。

本文解决了这个问题

基本上,在 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 }
);
}

希望这对某些人有所帮助,我花了很长时间才找到答案。