Настройка страницы по умолчанию для конфигурации сервера ASP.NET (Visual Studio)

Когда я собираю и запускаю свое приложение, я получаю список каталогов в браузере (also happens for sub folders), и я должен нажать на Index.aspx. Это сводит меня с ума.

Visual Studio 2008 ASP.NET Development Server 9.0.0.0

 Lijo07 июн. 2013 г., 11:51
См. Ответ @Philippe Leybaert, который гласит: «Перейдите на страницу свойств проекта, выберите« Веб »; вкладка & quot;
 Jonathan Williams04 авг. 2011 г., 18:32
Этот же вопрос (заданный после этого) также появляется с другим ответом,here

Ответы на вопрос(7)

Если вы используете IIS, а не сервер VS webdev, убедитесь, что Index.aspx является одним из ваших файлов по умолчанию и что просмотр каталогов отключен.

 Dan Williams14 июл. 2009 г., 15:24
Нет, я использую сервер VS webdev.
public class Global : System.Web.HttpApplication
{
    protected void Application_BeginRequest(object sender, EventArgs e)
    {
        if (Request.Url.AbsolutePath.EndsWith("/"))
        {
             Server.Transfer("~/index.aspx");
        }
    }
}
 Dan Williams14 июл. 2009 г., 15:24
Нет, я использую сервер VS webdev.
 03 окт. 2013 г., 15:23
«Имитация - самая искренняя форма лести». - Чарльз Калеб Колтон
 02 сент. 2012 г., 04:28
Этот ответ не совсем правильный. Если пользователь переходит на & quot; site.com/account/" пользователь будет перенаправлен на «/index.aspx"» вместо «/account/index.aspx"»;

Перейдите на страницу свойств проекта, выберите «Сеть». На вкладке и в верхней части (в разделе «Начать действие») введите имя страницы на странице «Определенная страница». коробка. В твоем случаеindex.aspx

 Dan Williams14 июл. 2009 г., 15:50
Он работает, как и ожидалось, для нескольких других разработчиков в моей группе
 14 июл. 2009 г., 15:22
Невозможно указать страницу по умолчанию во внутреннем веб-сервере Visual Studio (Cassini).
 Dan Williams14 июл. 2009 г., 15:16
Да, это работает для начальной страницы, но когда я просматриваю что-либо в подпапке, я снова получаю список папок.
 09 мар. 2011 г., 01:47
Похоже, Default.html тоже работает.
 14 июл. 2009 г., 16:25
Встроенный веб-сервер аппаратно использует Default.aspx в качестве страницы по умолчанию. Может быть, члены вашей команды используют Default.aspx вместо index.aspx? Или, может быть, они используют локальный IIS на своей машине для разработки.

Щелкните правой кнопкой мыши веб-страницу, которую вы хотите использовать в качестве страницы по умолчанию, и выберите & quot; Сделать стартовой страницей & quot; всякий раз, когда вы запускаете веб-приложение из Visual Studio, оно открывает выбранную страницу.

 Dan Williams14 июл. 2009 г., 16:07
Да, это работает для начальной страницы, но когда я просматриваю что-либо в подпапке, я снова получаю список папок.

Это один метод для опубликованного решения, чтобы показать SpeciFic страницу при запуске.

Вот пример маршрута для перенаправления на определенную страницу ...

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 выполняется при запуске приложения, здесь вы можете определить свой.

Примечание. Я использую Visual Studio 2013 и & quot; YourSolutionName & quot; должен измениться на название вашего проекта ..

Решение Вопроса

The built-in webserver is hardwired to use Default.aspx as the default page.

Проект должен иметь по крайней мере пустойDefault.aspx файл для преодоления проблемы с каталогом дляGlobal.asax.

:)

После добавления этого пустого файла все запросы могут быть обработаны в одном месте.

public class Global : System.Web.HttpApplication
{
    protected void Application_BeginRequest(object sender, EventArgs e)
    {
        this.Response.Write("[email protected] " + this.Request.Path + "?" + this.Request.QueryString);
        this.Response.StatusCode = 200;
        this.Response.ContentType = "text/plain";

        this.Response.End();
    }
}

Подобно ответу 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");
        }
    }
}

Ваш ответ на вопрос