2015-10-21 5 views
1

Я пытаюсь открыть сайт nopCommerce 3.50 для открытия определенной страницы при посещении сайта.Невозможно изменить начальную страницу по умолчанию nopCommerce

Когда я отлаживаю проект локально, он работает правильно, поскольку у меня есть определенная страница «welcome.html», заданная как действие запуска в свойствах проекта (в Visual Studio 2012). Однако, как только сайт публикуется на сервере, он игнорирует этот запрос.

В IIS Я проверил, что «welcome.html» находится в верхней части списка страниц по умолчанию, однако nopCommerce игнорирует эти параметры (как показано на разных форумах), и даже если вы удаляете все остальное, он всегда переходит к умолчанию .aspx.

Я попытался добавить это в web.config в system.webServer, и это не имеет никакого значения:

<defaultDocument> 
                <files> 
                     <add value="Welcome.html"/> 
                 </files>         
    </defaultDocument> 

Там нет других ссылок на стартовую страницу по умолчанию в конфигурации.

Я не слишком хорошо знаком с nopCommerce или маршрутизацией, знает ли кто-нибудь, как я могу изменить страницу по умолчанию? Все, что я нашел на форумах, пока не сработало. И да, я перестроил проект после каждого изменения, как правило, полностью заменяя папку bin на сервере, чтобы убедиться.

Я не хочу, чтобы сайт перенаправлял конкретное действие или представление, но на статический HTML-документ в корневой папке проекта (ну, я не хочу, чтобы это действительно было, но клиент был очень специфичным о том, чего они хотят). Статическая страница имеет две кнопки, одна из которых перейдет на nopCommerce default.aspx, а другая - на другой сайт.

Благодаря

+0

вы пробовали меняющегося маршрутизации в файле Global.asax.cs - "HomeController", "Index" страницы? – batmaci

+0

Я не знал, как это сделать, чтобы перенаправить на отдельную HTML-страницу, а не на просмотр? – Lyall

+0

посмотрите пожалуйста. – batmaci

ответ

1

вы можете изменить маршрут в Global.asax.cs

По умолчанию маршрут является

routes.MapRoute(
       "Default", // Route name 
       "{controller}/{action}/{id}", // URL with parameters 
       new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
       new[] { "Nop.Web.Controllers" } 
      ); 

Этот маршрут покажет вам выполнить в HomeController, есть действие Index (функция) и вернуть который определяется под одним и тем же именем в разделе «Виды». Просмотреть путь будет Посмотреть/Главная/Индекс

Чтобы изменить это, вы должны добавить функцию приветствия (просто скопируйте функцию индекса и переименуйте с приветствием и вставьте ее в HomeController).

, то вы можете изменить свою маршрутизацию, как показано ниже.

routes.MapRoute(
        "Default", // Route name 
        "{controller}/{action}/{id}", // URL with parameters 
        new { controller = "Home", action = "Welcome", id = UrlParameter.Optional }, 
        new[] { "Nop.Web.Controllers" } 
       ); 

Не забудьте создать Welcome вид под Views/Home, как Welcome.cshtml

+0

Благодарим за ответ, но он не касается части в вопросе «Я не хочу, чтобы сайт перенаправлял конкретное действие или представление, но в статический HTML-документ в корневой папке проекта». Однако, если это не было для этого конкретного (глупого) требования, ваш ответ очень полезен, и я уверен, что он будет полезен для меня в нормальных условиях, поэтому спасибо :) – Lyall

+0

@Lyall Это может быть общий вопрос MVC. в конечном итоге файлы cshtml генерируют html на стороне клиента, его просто называют cshtml на стороне сервера. вы можете проверить этот URL. http://stackoverflow.com/questions/22656945/set-index-html-as-the-default-page – batmaci

+0

Хорошая мысль, и я также понял, что то, что я собираюсь сделать, невозможно. Обходной путь, который я нашел (ответ, который я опубликовал) работает для этого конкретного примера, но любой, кто хочет изменить страницу по умолчанию (т. Е. Глядя на вопрос этого вопроса), сможет следить за вашим ответом и достигать того, чего они хотят. – Lyall

1

Найден способ вокруг него, чтобы соответствовать требованиям:

  1. Добавить новую папку в директории («NOP», например) и положить все, кроме страницы Welcome.html внутри новой папке.
  2. Измените ссылки на странице приветствия, чтобы указать внутри новой структуры папок (изображения, ссылки и т. Д.).
  3. В IIS убедитесь, что welcome.html установлен как документ по умолчанию, и поскольку он теперь является единственным документом в папке, он загружается правильно.
  4. В IIS преобразовать новую папку в приложение (щелкните правой кнопкой мыши> «преобразовать приложения» на Windows Server 2012 R2)

Таким образом, никакие изменения не нужны для кода в nopCommerce и желаемого результата достигается ,

Смежные вопросы