Ответ 1
Я добавил инструкцию в конфигурацию маршрута, чтобы игнорировать пустые маршруты и решить мою проблему.
routes.IgnoreRoute("");
У меня есть пустое приложение ASP.NET, и я добавил файл index.html. Я хочу установить index.html в качестве страницы по умолчанию для сайта.
Я попытался щелкнуть правой кнопкой мыши по index.html и установить в качестве стартовой страницы, и когда я запустил его, url: http://localhost:5134/index.html
, но я действительно хочу, чтобы при вводе: http://localhost:5134
, он должен загружать Страница index.html.
моя конфигурация маршрута:
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 }
);
}
}
Я добавил инструкцию в конфигурацию маршрута, чтобы игнорировать пустые маршруты и решить мою проблему.
routes.IgnoreRoute("");
Как ответил @vir, добавьте routes.IgnoreRoute("");
в RegisterRoutes(RouteCollection routes)
, который вы должны найти в RouteConfig.cs по умолчанию.
Вот как выглядит метод:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
Причина в том, что ASP.NET MVC использует управление URL-адресами, и по умолчанию маршрутизация такова, что все URL-адреса без расширения не контролируются обработчиком Url без расширения, определенным в web.config.
Здесь подробно объясняется .
Предполагая, что веб-приложение работает в IIS, страница по умолчанию может быть указана в файле web.config:
<system.webServer>
<defaultDocument>
<files>
<clear />
<add value="index.html" />
</files>
</defaultDocument>
</system.webServer>
Одно из решений:
//routes.MapRoute(
// name: "Default",
// url: "{controller}/{action}/{id}",
// defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
// );
Я имею в виду, комментирую или удаляю этот код в вашем проекте MVC, чтобы избежать поведения по умолчанию, когда вы делаете начальный запрос http://localhost:5134/
.
index.html должен быть в корне вашего решения.
Надеюсь, это поможет! Это работает для меня.
Создайте новый контроллер DefaultController. В действии индекса я написал одну переадресацию строки:
return Redirect("~/index.html")
В RouteConfig.cs измените контроллер = "По умолчанию" для маршрута.
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Default", action = "Index", id = UrlParameter.Optional }
);