none
MVC 3. Развертывание приложения. RRS feed

  • Вопрос

  • .NET 4, ASP.NET MVC 3, Windows Server 2008, IIS 7

    Возникло несколько вопросов.

    1. При нажатии "Опубликовать" в Visual Studio создается следующая структура папок:

    /

    ---bin

    ------dll файлы

    ------bin

    ---------еще те же dll файлы

    ------Bussiness

    ------data

    ------Images

    ------Models

    ------Styles

    ------Controllers

    ---Bussiness

    ---Controllers

    ---data

    ---Images

    ---Models

    ---Styles

    ---*.csproj

    ---Global.asax

    ---Global.asax.cs

    Web.config

    Как видно, почти все папки дублируются в bin. Почему?


Ответы

  • Как всегда - написал на форум, и решение, не поддающееся несколько часов пришло в голову.

    Проблема была в Web.config, скорее всего в отсутствии опции <modules runAllManagedModulesForAllRequests="true"/>

    Уже долго мучаюсь с этой проблемой, даже создал новый VDS.

    В новом сервере запустил Web Platform Installer 3.0, там выбрал следующие итемы:

    • ASP.NET MVC 3 (Visual Studio 2010)
    • ASP.NET MVC 3 Tools Update Language Packs
    • ASP.NET Web PAges
    • ASP.NET Web PAges Language Packs
    • IIS 7 Recommended Configuration
    • IIS 7.5 Express
    • FTP Publishing Service 7.5

    Установил, запустил aspnet_regiis -i, перезагрузился.

    Поменял версию фрэймворка у DefaultAppPool с второй на четвертую.

    Создал новый MVC 3 проект, опубликовал, скопировал на сервер - работает

    Скопировал результат Publish моего сайта по фтп в папку Default Web Site

    Захожу на сайт через удаленное управление на сервере, но сервер почему-то не понимает, что там лежит MVC 3 сайт

    <fieldset>

    HTTP Error 403.14 - Forbidden

    The Web server is configured to not list the contents of this directory.

    </fieldset>
    <fieldset><legend>Detailed Error Information</legend>
    Module DirectoryListingModule
    Notification ExecuteRequestHandler
    Handler StaticFile
    Error Code 0x00000000
    Requested URL http://127.0.0.1:80/
    Physical Path C:\inetpub\wwwroot
    Logon Method Anonymous
    Logon User Anonymous
    </fieldset>



Все ответы

  • А куда именно Вы их публикуете Web Deploy, File System, Ftp?
    Модератор
  • Файловая система
  • Странно, обычно при публикации в выходную директорию попадают только файлы входящие в проект (они видны в Solution Explorer без нажатия кнопки Show All Files) и папка bin (это исключение), она не видна, но всё что в ней, публикуется. А Вы случайно не скопировали туда ничего лишнего, т.е. её же в саму себя?
    Модератор
  • Нет, и пробовал удалять из нее все, кроме dll-ок
  • После того как Вы их оттуда удаляете, они при публикации появляются снова?
    Модератор
  • Да.

    Возможно это потому, что в свойствах файлов стоит "Копировать в выходной каталог = всегда" ?

    Где эти файлы должны быть в итоге на рабочем сайте?


  • Второй вопрос - у меня установлен .NET 4, я выполнил aspnet_regiis -i, добавил в iis ту папку, которая у меня получилась - и получаю 503 Internal server error на серверной машине.
  • "Копировать в выходной каталог = всегда" - так не должно быть, там по умолчанию нужно, чтобы было Do not copy(не копировать), поменяйте. Иногда приходится ручками подправлять.

    "Где эти файлы должны быть в итоге на рабочем сайте?" - каждый на своём месте, как в Solution Explorer, и в корневом каталоге, который Вам предоставит хостинг-провайдер.

    Модератор
  • " и получаю 503 Internal server error на серверной машине." - могу предположить, что у Вас выставлен неверный DefaultAppPool (Advanced Settigs).  Вам нужен ASP.NET 4 Integrated, точно не помню как там она называется. Если нет, то приведите подробный код ошибки. И лучше, чтобы не заморачиваться публикуйте из Visual Studio прямо в локальный IIS.
    Модератор
  • Там все было нормально

    Теперь ошибка 503.14 forbidden

    The WEb server is contifured to not list the contents of this directory

    Такое ощущение, что сервер не знает, что такое MVC 3

    Права на директорию стоят полные для Everyone


  • У Вас операционка 64 битная или 32? Если 64 бит то нужно запустить aspnet_regiis из папки Framework64. Обычно такая ошибка из-за настроек DefaultAppPool, так как в MVC используется роутинг, и доступ к каталогу открыт по умолчанию. Сколько вариантов там у Вас?
    Модератор
  • Как всегда - написал на форум, и решение, не поддающееся несколько часов пришло в голову.

    Проблема была в Web.config, скорее всего в отсутствии опции <modules runAllManagedModulesForAllRequests="true"/>

    Уже долго мучаюсь с этой проблемой, даже создал новый VDS.

    В новом сервере запустил Web Platform Installer 3.0, там выбрал следующие итемы:

    • ASP.NET MVC 3 (Visual Studio 2010)
    • ASP.NET MVC 3 Tools Update Language Packs
    • ASP.NET Web PAges
    • ASP.NET Web PAges Language Packs
    • IIS 7 Recommended Configuration
    • IIS 7.5 Express
    • FTP Publishing Service 7.5

    Установил, запустил aspnet_regiis -i, перезагрузился.

    Поменял версию фрэймворка у DefaultAppPool с второй на четвертую.

    Создал новый MVC 3 проект, опубликовал, скопировал на сервер - работает

    Скопировал результат Publish моего сайта по фтп в папку Default Web Site

    Захожу на сайт через удаленное управление на сервере, но сервер почему-то не понимает, что там лежит MVC 3 сайт

    <fieldset>

    HTTP Error 403.14 - Forbidden

    The Web server is configured to not list the contents of this directory.

    </fieldset>
    <fieldset><legend>Detailed Error Information</legend>
    Module DirectoryListingModule
    Notification ExecuteRequestHandler
    Handler StaticFile
    Error Code 0x00000000
    Requested URL http://127.0.0.1:80/
    Physical Path C:\inetpub\wwwroot
    Logon Method Anonymous
    Logon User Anonymous
    </fieldset>



  • "Скопировал результат Publish моего сайта по фтп в папку Default Web Site" - копировать туда файлы мало, её ещё нужно настроить. Лучше создайте там отдельную папку, и копируйте файлы туда, потом сконфигурируйте её. Главное не местоположение файлов, а правильная конфигурация виртуального каталога.
    Модератор
  • Здравствуйте,

    Проблема еще актуальна или вы нашли решение ее?


    Для связи [mail]

    Модератор
  • Добрый день, решение нашел, описал в начале первого поста