IIS7 zwraca puste, gdy żądana jest zawartość statyczna

14

Próbuję skonfigurować maszynę demonstracyjną, która jest EEEPC z systemem Windows 7 Home Premium Edition, wszystkie sterowniki są poprawnie załadowane (nie pytaj mnie, dlaczego jest to wersja Home) z zainstalowanym programem IIS7.

Wdrożyłem aplikację do demonstracji na maszynie, która jest witryną MVC platformy ASP.NET, dodałem witrynę za pośrednictwem konsoli, dodałem pulę aplikacji. Pula aplikacji działa jako NetworkService, a gość uwierzytelnia się jako IUSR.

Dodałem prawa do modyfikacji do NetworkService oraz prawa do odczytu i wykonywania do IUSR do folderu strony i jej zawartości.

Gdy uderzę w korzeń sieci, powiedz http://example.com/ otrzymuję właściwy HTML renderowany ze strony internetowej (co oznacza, że ​​aplikacja działa), ale problem polega na tym, że cała zawartość statyczna jest pusta.

Nie jestem pewien, dlaczego tak się dzieje. Brak strony błędu 404 lub 500, po prostu pusta odpowiedź przy dostępie do zawartości statycznej. Cała zawartość generowana przez ASP.NET działa dobrze (choć trochę dziwnie, ponieważ wszystkie CSS i obrazy nie ładują się)

Proszę o pomoc, konsola zarządzania IIS7 jest dla mnie bardzo myląca i potrzebuję maszyny do jutra.

czakryt
źródło

Odpowiedzi:

2

W moim przypadku rola serwera została już zainstalowana, a jednak statyczny moduł obsługiwał puste strony nawet dla trywialnej witryny testowej z tylko jednym mapowaniem modułu obsługi.

Poprawka polegała na włączeniu ograniczenia żądania „Wywołaj moduł obsługi tylko wtedy, gdy żądanie jest mapowane na”. Nie ma znaczenia, czy ustawię go na „Plik”, czy „Plik lub katalog”; tak długo, jak pole wyboru jest włączone, działa:

                  wprowadź opis zdjęcia tutaj

Jeśli to nadal nie pomaga, inną rzeczą, która prowadzi do pustych stron, jest próba określenia ścieżki w sekcji „Ścieżka żądania”, na przykład, publica może public/*. To drugie jest po prostu błędne, podczas gdy pierwsze powinno zostać zaakceptowane, ale zamiast tego skutkuje pustymi stronami. Rozwiązaniem jest zawinięcie mapowania modułu obsługi w <location path='public'>sekcję, określając *ustawienie „Ścieżka żądania”. Lub w Menedżerze usług IIS rozwiń witrynę i najpierw wybierz folder, a następnie edytuj odwzorowania programu obsługi.

RomanSt
źródło
1

Jak sugerował @MattB, nie miałem włączonej funkcji „Treść statyczna”, ale to tylko jedna część problemu.

Dodałem funkcję „Materiał statyczny”, a mimo to problem nadal występuje, więc zabieram się za usunięcie domyślnego MvcHttpHandler z listy mapowań programu obsługi i jakoś problem sam się rozwiązuje ... więc problem polegał na tym, że MvcHttpHandler przechwytywał żądania przed StaticFileHandler,

Do Twojej wiadomości, po zainstalowaniu „Treści statycznej”, upewnij się również, że ...

  1. W Menedżerze internetowych usług informacyjnych kliknij swoją witrynę.
  2. Kliknij dwukrotnie funkcję „Mapowania modułu obsługi”.
  3. Po prawej stronie (panel akcji) zobaczysz link zatytułowany „Wyświetl listę zleceń ...”, kliknij go.
  4. Następnie znajdziesz kolejność, w której moduł jest dopasowywany do każdego żądania, upewnij się, że kolejność ma sens.

W moim przypadku MvcHttpHandler był ponad wszystko inne, rozwiązałem problem, przenosząc go na dół listy, która jest najbardziej sensownym miejscem, w którym powinna się ona znajdować, ponieważ procedury obsługi plików AXD, procedury TRACE, obsługa opcji OPTIONS i zawartość statyczna zostają zastrzelone przy pierwszej obsłudze żądania.

Mam nadzieję, że to pomoże komuś googlować ten sam problem :-)

czakryt
źródło