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

时间:2009-12-16 08:04:08

标签: asp.net iis-7 web-config

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

8 个答案:

答案 0 :(得分:236)

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

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

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

答案 1 :(得分:23)

Tip #84: Did you know… How to set a Start page for your Web Site in Visual Web Developer?

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

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

答案 2 :(得分: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
}

答案 3 :(得分:4)

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

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

答案 4 :(得分: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>

答案 5 :(得分:3)

您可以使用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

答案 6 :(得分:1)

我更喜欢使用以下方法:

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

答案 7 :(得分: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 }
    );
}

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