设置 ASP.NET (Visual Studio) 服务器配置的默认页面

Posted

技术标签:

【中文标题】设置 ASP.NET (Visual Studio) 服务器配置的默认页面【英文标题】:Setting the default page for ASP.NET (Visual Studio) server configuration 【发布时间】:2010-11-10 15:35:36 【问题描述】:

当我构建和运行我的应用程序时,我会在浏览器中看到一个目录列表(子文件夹也会出现),我必须单击 Index.aspx。这让我发疯了。

Visual Studio 2008 ASP.NET 开发服务器 9.0.0.0

【问题讨论】:

同样的问题(在这个问题之后提出)也出现了,但答案不同,here 参考@Philippe Leybaert 回答“转到项目的属性页面,选择“Web”选项卡“ 【参考方案1】:

我不确定您使用的是什么框架,但在 ASP.NET MVC 中,您可以简单地转到 App_Start 文件夹并打开 RouteConfig.cs 文件。代码应如下所示:

    public class RouteConfig
    
        public static void RegisterRoutes(RouteCollection routes)
        
            routes.IgnoreRoute("resource.axd/*pathInfo");

            routes.MapRoute(
                name: "Default",
                url: "controller/action/id",
                defaults: new  controller = "Home", action = "Index", id = UrlParameter.Optional 
            );
        
    

您可以在defaults之后的最后一行代码中更改登录页面。

【讨论】:

【参考方案2】:

实现此目的的一种方法是在 Web.config 中添加 DefaultDocument 设置。

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

【讨论】:

【参考方案3】:

这是一种在启动时显示特定页面的已发布解决方案的方法。

这是重定向到特定页面的路由示例...

public class RouteConfig

    public static void RegisterRoutes(RouteCollection routes)
    
        routes.IgnoreRoute("resource.axd/*pathInfo");

        routes.MapRoute(
            name: "Default",
            url: "controller/action/id",
            defaults: new  controller = "Home", action = "Index", id = UrlParameter.Optional ,
            namespaces: new[]  "YourSolutionName.Controllers" 
        );
    

默认情况下 Home Controllers Index 方法在应用程序启动时执行,您可以在此处定义。

注意:我正在使用 Visual Studio 2013,“YourSolutionName”将更改为您的项目名称..

【讨论】:

【参考方案4】:
public class Global : System.Web.HttpApplication

    protected void Application_BeginRequest(object sender, EventArgs e)
    
        if (Request.Url.AbsolutePath.EndsWith("/"))
        
             Server.Transfer("~/index.aspx");
        
    

【讨论】:

这个答案不太对。如果用户访问“site.com/account/”,用户将被重定向到“/index.aspx”,而不是“/account/index.aspx” “模仿是最真诚的奉承。” - 查尔斯·卡莱布·科尔顿【参考方案5】:

与上面 zproxy 的回答类似,我使用 Gloabal.asax.cs 中的以下代码来实现这一点:

public class Global : System.Web.HttpApplication

    protected void Application_BeginRequest(object sender, EventArgs e)
    
        if (Request.Url.AbsolutePath.EndsWith("/"))
        
            Server.Transfer(Request.Url.AbsolutePath + "index.aspx");
        
    

【讨论】:

【参考方案6】:

内置的网络服务器被硬连线使用 Default.aspx 作为默认页面。

该项目必须至少有一个空的Default.aspx 文件才能解决Global.asax 的目录列表问题。

:)

添加该空文件后,所有请求都可以在一个位置处理。

public class Global : System.Web.HttpApplication

    protected void Application_BeginRequest(object sender, EventArgs e)
    
        this.Response.Write("hi@ " + this.Request.Path + "?" + this.Request.QueryString);
        this.Response.StatusCode = 200;
        this.Response.ContentType = "text/plain";

        this.Response.End();
    

【讨论】:

【参考方案7】:

如果您针对 IIS 而不是 VS webdev 服务器运行,请确保 Index.aspx 是您的默认文件之一,并且目录浏览已关闭。

【讨论】:

不,我正在运行 VS webdev 服务器。【参考方案8】:

右键单击要用作默认页面的网页,然后在从 Visual Studio 运行 Web 应用程序时选择“设置为起始页”,它将打开所选页面。

【讨论】:

是的,这适用于起始页,但是当我浏览到子文件夹中的任何内容时,我会再次获得一个文件夹列表。【参考方案9】:

转到项目的属性页面,选择“Web”选项卡,然后在顶部(在“开始操作”部分),在“特定页面”框中输入页面名称。在您的情况下 index.aspx

【讨论】:

是的,这适用于起始页,但是当我浏览到子文件夹中的任何内容时,我会再次获得一个文件夹列表。 无法在 Visual Studio 的内部网络服务器 (Cassini) 中指定默认页面 我小组中的其他几个开发人员都按预期工作 内置网络服务器硬连线使用 Default.aspx 作为默认页面。也许您的团队成员正在使用 Default.aspx 而不是 index.aspx?或者他们可能正在使用他们机器上的本地 IIS 进行开发。 谢谢,现在如果我只能让它在运行解决方案时始终启动 Web 项目而不是子项目

以上是关于设置 ASP.NET (Visual Studio) 服务器配置的默认页面的主要内容,如果未能解决你的问题,请参考以下文章

在 Visual Studio 的 ASP.NET Core + Angular 2 模板上设置图像路径

急需!!!visual studio.net 2005怎么 设置环境变量?

ASP.Net - 从 Visual Studio 2003 过渡到 Visual Studio 2010

Visual Studio 2017 使用 C# 7.2 发布 ASP.NET Core 应用程序

Visual Studio 2017 安装中断 Visual Studio 2015 ASP.NET Core 项目

ASP.NET 4 and Visual Studio 2010