ASP.NET MVC 3.0 w Azure

Udostępnij na: Facebook

Autor: Piotr Zieliński

Opublikowano: 2011-06-01

Pobierz i uruchom

Wprowadzenie

Nowa wersja ASP.NET MVC dostarcza wiele usprawnień, a prosta składnia Razor z pewnością ułatwia tworzenie aplikacji webowych. Niestety, aktualnie Azure nie zawiera bibliotek ASP.NET MVC 3.0 – należy samodzielnie zainstalować wymagane pliki.

Metoda I

Bardzo łatwo można zainstalować wymagane biblioteki, ustawiając atrybut CopyLocal na True. Nie wystarczy jednak ustawić tego atrybutu na dołączonych bibliotekach do standardowego projektu ASP.NET MVC 3.0. Część wymaganych bibliotek jest zależna w sposób pochodny. Innymi słowy, biblioteki dołączone do projektu ASP.NET MVC 3.0 odwołują się do innych wymaganych bibliotek. Z tego względu do projektu należy dodać kilka dodatkowych, standardowo niedołączonych plików. Aby na Azure aplikacja ASP.NET MVC 3.0 działała poprawnie, należy ustawić atrybut CopyLocal na True dla następujących bibliotek (niektóre należy dodać do projektu):

  • Microsoft.Web.Infrastructure
  • System.Web.Helpers
  • System.Web.Mvc
  • System.Web.Razor
  • System.Web.WebPages
  • System.Web.WebPages.Deployment
  • System.Web.WebPages.Razor

Metoda II

Niekiedy programiści nie chcą dodawać do projektu bibliotek, które nie są bezpośrednio wymagane. Możemy to ominąć, instalując ASP.NET MVC na serwerze:

1) tworzymy projekt Azure, nie wybierając przy tym roli (w aktualnej wersji kreator nie wspiera ról ASP.NET MVC 3.0),

2) dodajemy nowy projekt ASP.NET MVC 3.0, a następnie w Solution Explorer odnajdujemy węzeł Roles i z menu kontekstowego dodajemy utworzony projekt ASP.NET MVC 3.0,

3) Ściagamy instalator MVC 3.0 AspNetMVC3Setup.exe. Następnie tworzymy folder Tasks i umieszczamy w nim ściągnięty instalator.  Należy pamiętać, aby wszystkie pliki miały ustawione Build Action na Content oraz Copy to Output Directory na true (również skrypt utworzony w następnym kroku),

4) tworzymy skrypt InstallMVC.cmd:

%~dp0/AspNetMVC3Setup.exe /q /log %~dp0mvc3_install.htm
exit /b 0

"%~dp0” zwróci ścieżkę do katalogu, w którym znajduje się aktualnie wykonywany skrypt (czyli ścieżka do folderu Tasks),

5) w pliku ServiceDefinition.csdef dla danej roli doczepiamy skrypt uruchomieniowy (wywoła się przy starcie roli):

<Startup>
<Task commandLine="Tasks\InstallMVC.cmd" executionContext="elevated" taskType="simple" />
    </Startup>

Po wykonaniu powyższych czynności można wdrożyć cały projekt na serwer. Ze względu na dołączony skrypt uruchomieniowy oraz instalator proces wdrożenia będzie trwać dłużej niż zwykle. Aby mieć pewność, że wszystko zostało prawidłowo wykonane, należy uruchomić aplikację i sprawdzić, czy strona ASP.NET  MVC 3.0 się wyświetla.

Zakończenie

Windows Azure nie zawiera bibliotek wymaganych do obsługi ASP.NET MVC 3.0. Najelegantszym sposobem jest ściągnięcie instalatora AspNetMVC3Setup i wywołanie go w skryptach uruchomieniowych. Jeśli komuś zależy na czasie, może po prostu dołączyć wszystkie biblioteki do projektu i ustawić atrybut CopyLocal na True. Można również zainstalować MVC 3.0 za pomocą WebPICmd (więcej informacji na MSDN).