2011-01-02 14 views
7

Próbuję skonfigurować aplikację ASP.Net MVC 2 w środowisku Linux. Zainstalowałem Ubuntu 10.10 na VirtualBox, a następnie zainstalowałem Mono 2.8 ze źródeł. Następnie zainstalowałem nginx i skonfiguruję go zgodnie z zaleceniami here. Niestety, FastCGI pokazuje mi błąd standardowy 500 strony:ASP.Net MVC 2 na nginx/mono 2.8

No Application Found 
Unable to find a matching application for request: 
Host localhost:80 
Port 80 
Request Path /Default.aspx 
Physical Path /var/www/mvc/Default.aspx 

Moja aplikacja znajduje się w katalogu var www///MVC. Próbowałem utworzyć plik pośredniczący Default.aspx i umieścić go w katalogu głównym aplikacji, ale to nie pomogło, ten sam błąd wystąpił. Dzięki.

+0

Jakiej wersji serwera fastcgi mono używasz? – yojimbo87

+0

@Tomi fastcgi-mono-server2 –

+0

Czy masz szansę na rozwiązanie tego problemu? Jestem w miejscu, w którym byłeś ponad rok temu z błędem 500 stron - czy udało ci się go rozwiązać? Próbowałem po prostu wyrzucać prostą stronę index.aspx w moim katalogu stron, ale nadal dostaję błąd 500. –

Odpowiedz

2

Czy Twoja aplikacja działa z xsp (xsp4, jeśli używasz .net 4.0)? Upewnij się, że działa, zanim spróbujesz skonfigurować połączenie z innym serwerem WWW.

Czy nginx wie, gdzie można znaleźć mono? Najprawdopodobniej masz równoległą instalację i nie będzie ona w domyślnych ścieżkach.

używam apache, ale można jeszcze znaleźć kilka wskazówek przydatnych na moim blogu: http://tqcblog.com/2010/04/02/ubuntu-subversion-teamcity-mono-2-6-and-asp-net-mvc/

+0

Tak, to działa. Właściwie nginx nie musi wiedzieć nic o mono, ponieważ działa z każdą standardową implementacją serwera FastCGI (na przykład z fastcgi-mono-server4). W każdym razie, dzięki za link, może rozwiązanie Apache będzie dla mnie odpowiednie. –

+6

Jak to jest odpowiedź? –

3

Ponieważ korzystasz z aplikacji ASP.NET MVC 2, powinieneś użyć fastcgi-mono-server4.

+0

Dzięki za podpowiedź, ale to nie pomogło. –

+0

Czy masz standardowego projektu MVC 2, który nie ma Default.aspx w katalogu głównym swojej aplikacji internetowej? – yojimbo87

+0

Tak, prosta standardowa aplikacja szablonu MVC 2. –

17

Robiłem kilka testów z tego, jak dobrze, wykorzystując wszystkie pliki binarne ubuntu10.10. Z tego, co mogę z niego zrobić, albo nginx nie przekazuje nazwy hosta monofonicznego serwera nie otrzymuje go przez protokół fastcgi. W każdym razie tutorial:

fastcgi-mono-server2 /applications=www.domain1.xyz:/:/var/www/www.domain1.xyz/ /socket=tcp:127.0.0.1:9000 

nie działa. Usunięcie nazwy hosta sprawia, że ​​wszystko działa:

fastcgi-mono-server2 /applications=/:/var/www/www.domain1.xyz/ /socket=tcp:127.0.0.1:9000 

, ale to oczywiście blokuje korzystanie z wielu wirtualnych hostów mono.

+1

mvc nie działa z fastcgi-mono-server2, potrzebujesz fastcgi-mono-server4 –

2

miałem ten problem właśnie teraz, ja też było po dokumencie na stronie Mono:

starałem się rozpocząć fastcgi-mono-serwer, jak to sugeruje:

sudo fastcgi-mono-server4 /applications=www.domain1.xyz:/:/var/www/www.domain1.xyz/ /socket=tcp:127.0.0.1:9000 & 

jednak kiedy to zrobiłem, mam taki sam problem jak ty. Zmieniłem go w ten sposób:

sudo fastcgi-mono-server4 /applications=/:/var/www/www.domain1.xyz/ /socket=tcp:127.0.0.1:9000 & 

I to działało (musiałem wpisać www.domain1.xyz/Home/Index zobaczyć moją stronę MVC, nie działało jak go zatrzymać poszukuje www.domain1. xyz/default.aspx jeszcze XD).

1

Należy upewnić się, że domena ustawiona w konfiguracji witryny jest zgodna z domeną przekazaną do serwera fastcgi. Tak na przykład, jeśli domyślna witryna (/etc/nginx/sites-enabled/default) ma następujący config:

server { 
    ... 
    server_name www.domain1.xyz; 
    ... 
} 

Trzeba by przekazać tę domenę do serwera FastCGI:

sudo fastcgi-mono-server4 /applications=www.domain1.xyz:/:/var/www/www.domain1.xyz/ ... 

Wtedy, kiedy dostęp do witryny to będzie oczywiście musisz być z ustawioną domeną.

3

Dodanie następującej linii w/etc/nginx/fastcgi_param rozwiązuje problem dla mnie.Pozwala także na korzystanie z wielu wirtualnych hostów.

fastcgi_param HTTP_HOST $host; 
Powiązane problemy