IIS 7.5 nie ładuje statycznych stron HTML

10

Na serwerze dedykowanym jest zainstalowany IIS 7.5. Aplikacja sieci Web ASP.NET 4.0 została skopiowana do swojego folderu, nowa strona internetowa jest tworzona pod własnym adresem IP na post 80, konta IIS_IUSR i IUSR mają prawa do odczytu / wykonywania w folderze witryny, witryna jest przypisana do własnej zintegrowanej puli aplikacji z wersją 4.0 .NET (Próbowałem klasycznej puli z tymi samymi wynikami).

Problem: gdy próbuję uzyskać dostęp do tej witryny, przeglądarka ładuje tylko treść wygenerowaną przez zasoby .NET, takie jak strony aspx, pliki .axd itp. Obrazy statyczne, statyczne pliki js, css i html znajdują się w źródle strony, ale IIS nie im służyć. Narzędzia deweloperskie we wszystkich przeglądarkach narzekają, że wszystkie te statyczne zasoby zostały wysłane przez serwer z niewłaściwym typem treści (zwykły tekst zamiast obrazu, stylów itp.). Co robię źle?

Kizz
źródło
Co widzisz w Fiddler (lub Firebug)?
SLaks
Jeśli jest to możliwe, uruchom stronę na serwerze, szczególnie uruchom samą zawartość statyczną na serwerze, a otrzymasz w pełni szczegółowy raport o błędzie.
Aristos
Nie używam Firebuga. Ale na przykład Chrome skarży się na „Zasób interpretowany jako obraz, ale przesłany z tekstem / zwykłym tekstem typu MIME” na plik jpg na stronie. To samo dla wszystkich stylów, js i statycznych stron HTML. Ponadto dynamiczne ładowanie skryptów i HTML nie działa.
@ Aristos: Zrobiłem to. Przeglądarka serwera renderuje stronę w taki sam sposób, jak robią to przeglądarki zewnętrzne. Brak błędów, po prostu niekompletna strona.
Czy użytkownik korzystający z serwera WWW ma prawo czytać te pliki?
Luc M

Odpowiedzi:

12

IIS 7 / 7.5 ma nową „funkcję” - Usługi ról. Post z rsbarro przypomniał mi, że istnieje jedna usługa roli odpowiedzialna za zawartość statyczną. Jest to serwer WWW / wspólne funkcje HTTP / treść statyczna. Sprawdź, czy ikona Typów MIME jest obecna w Menedżerze IIS, jak sugeruje rsbarro.

Jeśli tak nie jest, musisz zainstalować usługę roli Treść statyczna. Aby to zrobić, wybierz:

  • Menedżer serwera
  • Role
  • Węzeł serwera sieci Web (IIS) z lewego panelu
  • przewiń do okna Usługi ról
  • sprawdź, czy usługa roli Treść statyczna jest zainstalowana.

Z tego, co opisujesz, wydaje się, że to twój problem.

Ogólnie rzecz biorąc, jeśli IIS7 nie robi czegoś, co zrobił IIS6, pierwszą rzeczą do sprawdzenia jest sprawdzenie, czy zainstalowano odpowiednią usługę roli. Mam nadzieję że to pomoże.

Vlad
źródło
Rola Static Content, jak mi tego brakowało? Dzięki, naprawiłem problem idealnie.
David Thomas Garcia,
6

W obszarze IIS przejdź do swojej witryny internetowej i sprawdź sekcję Typy MIME (patrz zdjęcie poniżej). Upewnij się, że widzisz na tej liście wpisy dla plików .js, .css, .html itp. Oraz że określono odpowiedni typ MIME. Usługi IIS 7.5 będą wyświetlać strony tylko wtedy, gdy określony jest typ MIME. Domyślnie typy MIME dla tych rozszerzeń są konfigurowane w applicationHost.configpliku znajdującym się w C:\Windows\system32\inetsrv\configfolderze (może być konieczne uruchomienie Notatnika jako Administrator, aby wyświetlić plik). Wystarczy wyszukać .js i należy znaleźć wpis mocy <mimeMap>w <staticContent>elemencie.

rodzaje mimów

Te ustawienia można zastąpić w web.configpliku. Jeśli są, pojawią się w następującej lokalizacji w web.config:

<system.webServer>
    <staticContent>
        <remove fileExtension=".js" />
    </staticContent>
</system.webServer>

Na pewno zacznę od sprawdzenia. Jeśli wszystko wygląda poprawnie w sekcji Typy MIME, to możliwe, że masz moduł, który zakłóca żądania plików statycznych (ale najprawdopodobniej tylko jeśli <modules runAllManagedModulesForAllRequests="true" />ustawiłeś w tej <system.webServer>sekcji). W takim przypadku usunę wszystkie ustawienia modułów w twoim web.configi sprawdzę, czy możesz wywołać pliki statyczne, a następnie przeczytam je pojedynczo, aby zobaczyć, który moduł powoduje problem. Jeśli nie możesz tego rozgryźć, sugerowałbym opublikowanie treści twojego pytania web.config(lub przynajmniej sekcji system.webi system.webServer) w pytaniu.

rsbarro
źródło
2

Miałem ten sam problem, ale moja pula aplikacji działała na koncie domeny, a ten użytkownik miał prawa do folderu witryny. Moja witryna wyświetlała aspx, ale nie zawierała treści statycznych. Rozwiązaniem mojego problemu było dodanie grupy IIS_IUSRS do lokalnych zasad bezpieczeństwa o nazwie „personifikacja klienta po uwierzytelnieniu”. Grupa IIS_IUSRS miała na nim moje konto domeny. Korzystam z serwera iis 7.5 Windows 2008.

w niepełnym wymiarze godzin
źródło
Chciałbym móc głosować więcej niż raz. Przyszłam do tego pytania, szukając, dlaczego moje pliki .css nie były obsługiwane przez IIS. Było to związane z uprawnieniami systemu Windows w folderach, w których były przechowywane.
2b77bee6-5445-4c77-b1eb-4df3e5