суббота, 23 апреля 2011 г.

Как запустить веб сайт Asp.net MVC 3, если хостинг еще не поддерживает ASP.NET MVC 3

Я приобрел хостинг Soho от Mochahost. Они поддерживают ASP.NET 4, но все еще не поддерживают ASP.NET MVC 3 (вторая версия MVC поддерживается). Я только недавно занялся освоением новых фичей 4-го фреймворка и свежего MVC 3, так что думаю, что мой опыт разворачивания MVC 3 приложений, на хостинг будет полезен новичкам и сэкономит им несколько часов времени.

Шаг 0: Включите ASP.NET 4.0 Integrated Papeline

Просто включите его, иначе, без кропотливых дополнительных настроек вы свое ASP.NET MVC 3 приложение просто не запустите.

ASP.NET 4.0 Integrated Papeline

Более подробно integrated mode можно просчитать в статье Using ASP.NET MVC with Different Versions of IIS (C#), опять же, статья будет полезна, если у вас на хостинге используется IIS более ранний версии, чем 7.

Шаг 1: Добавьте в ваш проект необходимые файлы для запуска ASP.NET MVC 3 приложения


Явно добавьте в ваше проект следующие референсы:
Microsoft.Web.Infrastructure
  • System.Web.Helpers
  • System.Web.Mvc
  • System.Web.Razor
  • System.Web.WebPages
  • System.Web.WebPages.Deployment
  • System.Web.WebPages.Razor
Если вдруг необходимые референсы не будут отображаться на вкладке .NET окна Add reference, то зайдите на вкладку Browse и добавьте референсы прямо из GACка %windir%\Microsoft.NET\assembly\

Шаг 2: Для перечисленных выше сборок, установите свойство Copy Local = true

Свойство Copy Local = true необходимо для того, чтобы необходимая сборка, которой может не быть на сервере хостинга скопировалась и использовалась в вашем приложении локально.

Шаг 3: Пересоберите проект и скопируйте его на сервер хостера

После пересборки проекта, скопируйте файлы на серевер хостера. Можете воспользоваться удобной фичей Build -> Publish. Лично я публикую проект в локальную директорию, архивирую его zip-ом, а потом разархивирую его на сервере хостера через файл менеджер. Удачи вам! Тест создан на основе следующего поста: http://drew-prog.blogspot.com/2011/01/how-to-deploy-aspnet-mvc-3-app-to-web.html

5 коммент.:

Anatoly комментирует...

Добрый день, Дмитрий.
Спасибо Вам огромное за эту статью. Я также пользуюсь услугами Mochahost. У меня пакет Business. Когда вышла ASP.Net MVC 3, то у меня возникло желание переделать свой сайт с использованием этого framework. На данный момент я нахожусь в раздумьях - делать сайт с ноля или же использовать Orchard CMS, новая версия которой как раз и сделана на ASP.Net MVC 3.
Раз у Вас есть свой сайт на Mochahost, то вы наверняка пользуитесь панелью администратора Plesk Panel. В этой панели можно устанавливать версию ASP.NET. Но там можно выставить максимально только вторую версию ASP.NET.
В FAQ Mochahost - http://www.mochasupport.com/kayako/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=455 сказано что не смотря на это, четвёртая версия тоже будет работать, если указана вторая.

Вот соответственно, после всей этой писанины, возникает несколько вопросов :) -
стабильно ли работает Ваш сайта на ASP.MVC 3 на Mochahost ?
возможно ли на Mochahost поднять сайт на Orchard CMS ?
нет ли проблем с выполнением кода из сборок версии .net 4 ?
ASP.NET 4.0 Integrated Papeline включается в Plesk Panel ?

DmytroZ комментирует...

Мало чем смогу Вам помочь, но постараюсь.
Сайт мой еще «серьезно» не работает на Mochahost. Я с этим хостингом пока только экспериментирую. Но, могу сказать, что ASP.NET MVC 3 запускается нормально, к базам данных доступ работает, внешние страницы качает тоже без проблем. Это пока все что мне нужно.

Тариф у меня Soho – это который самый дешевый, и Plesk’а у меня нет. Скриншот в моем посте из WebsitePanel.

Galeleyo комментирует...

Привет, я вот недавно купил Бизнес план в Mochahost, и я сделал всё то, что указано в этом посте, но судя по всему проблема с моим хостом не та что описана тут, а другая, я получаю следующую ошибку
Server Error in '/' Application.

Could not load type 'System.ServiceModel.Activation.HttpModule' from assembly 'System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
полностью можно посмотреть здесь: castellodoro.ru

я полазил в инете и нашёл, что это лечится переустановкой Framework 4.0 но в supportе говорят, что у них всё нормально с ASP.NET 4.0 и что это моя проблема, тем не мене дефальтовое приложение "Hello World" выдаёт такую ошибку.
пишу, потому что обращаюсь за советом и тут я вижу, что у тебя сайт на mochahost, неужели это MVC 3 и он работает? (может быть просто мне достался неудачный сервер)?

Алексей

DmytroZ комментирует...

Алексей,
Возможно, это поможет вам в борьбе с сапортом:

http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/39571e42-aca7-469d-8c68-aa59c2da4fcc/
When attempting to run a service that receives messages over the HTTP transport, you may receive an error similar to the following:

Server Error in '/WCFApplication' Application

Could not load type 'System.ServiceModel.Activation.HttpModule' from assembly 'System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.

Description: An unhandled exception occurred during the execution of the current Web request. Review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.TypeLoadException: Could not load type 'System.ServiceModel.Activation.HttpModule' from assembly 'System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.

This error can occur when IIS is installed after installing .NET Framework 4, or if the 3.0 version of the WCF Http Activation module is installed after installing IIS and .NET Framework 4.

To resolve this problem, you must use the ASP.NET IIS Registration Tool (Aspnet_regiis.exe,) to register the correct version of ASP.NET. This can be accomplished by using the –iru parameters when running aspnet_regiis.exe as follows:

aspnet_regiis.exe –iru

Я на самом деле ловил такую ошибку, когда на своей домашней машине поставил IIS после установки .NET Framework 4. И тогда перерегистрация ASP.NET и выбор корректной версии в настройках пула мне помогла.
К сожалению, на мочахосте в WebsitePanel есть только одна опция конфигурации ASP.NET и она изображена на скриншоте в посте (4.0 Integrated Papeline).

Alexei комментирует...

Dzhariy
Я им уже отправлял эту статью, они отрицают, что у них эта проблема, отказываются делать aspnet_regiis.exe –iru и говорят, что я должен связаться со своими разработчиками, а я отвечаю, что веб приложение - это дефальтовый проект "Hello World", после чего получаю, какой-нибудь глупый ответ.

Отправить комментарий

 

.NET ate my MOSK;. Powered By Blogger © 2009 Bombeli | Theme Design: ooruc