ASP.NET 2.0 - Jak korzystać z app_offline.htm


120

Czytałem o app_offline.htmpliku, który można umieścić w katalogu głównym aplikacji .NET 2.0, co w istocie spowoduje zamknięcie aplikacji i wyłączenie żądań innych stron.

Umieściłem plik w katalogu głównym, a moja witryna nadal się ładuje. Wszedłem do domyślnych dokumentów w IIS i ustawiłem je na, app_offline.htma witryna nadal się ładuje (może to być jednak problem z pamięcią podręczną)

W każdym razie, czy ktoś miał problemy z używaniem tego? czy robię coś źle?


Czy istnieje strona firmy Microsoft, która to dokumentuje?
Coops



Udało mi się użyć app_offline.htm, aby ukryć zawartość mojej aplikacji internetowej i wyświetlić stronę tymczasową. Jednak mam problemy z przeglądaniem oryginalnych danych nawet po usunięciu pliku app_offline.htm. To moje pytanie: stackoverflow.com/questions/42979042/ ...
naz786

Odpowiedzi:


160

W przeszłości korzystałem z niezwykle przydatnej sztuczki app_offline.htm, aby zamykać / aktualizować witryny bez żadnych problemów.

Upewnij się, że faktycznie umieszczasz plik „app_offline.htm” w katalogu głównym witryny sieci Web, którą skonfigurowałeś w usługach IIS.

Upewnij się również, że plik ma dokładnie taką nazwę, jaka powinna być: app_offline.htm

Poza tym nie powinno być żadnych innych zmian w usługach IIS, które należy wprowadzić, ponieważ przetwarzanie tego pliku (o tej konkretnej nazwie) jest obsługiwane przez środowisko wykonawcze ASP.NET, a nie przez same usługi IIS (w przypadku usług IIS w wersji 6).

Należy jednak pamiętać, że chociaż umieszczenie tego pliku w katalogu głównym witryny wymusi „zamknięcie” aplikacji i wyświetlenie samej zawartości pliku „app_offline.htm”, wszelkie istniejące żądania nadal będą powodować obsługę prawdziwej witryny do nich. Tylko nowe żądania otrzymają zawartość app_offline.htm.

Jeśli nadal masz problemy, wypróbuj poniższe łącza, aby uzyskać dodatkowe informacje:

App_Offline.htm Scotta Gu

App_Offline.htm i obejście funkcji „Błędy przyjazne dla przeglądarki IE”

Czy app_offline.htm zatrzyma bieżące żądania, czy tylko nowe?


6
@JackM - Nie ma problemu! W rzeczywistości często zostawiam plik w mojej witrynie internetowej i nazywam go czymś w rodzaju „xapp_offline.htm”. Dlatego po prostu siedzi tam i nic nie robi. Kiedy chcę zaktualizować część lub całą witrynę, po prostu zmieniam nazwę pliku i usuwam prefiks „x” (zwykle odbywa się to przez FTP). Spowoduje to zamknięcie witryny, wykonuję aktualizację, a następnie ponownie zmieniam nazwę pliku z prefiksem „x”!
CraigTP,

@JackMarchetti - czy to zadziała również w przypadku witryn ASP.NET MVC korzystających z routingu global.asax? Sprawdziłem wszystkie sugestie tutaj, ale nadal nie mam szczęścia, aby to zadziałało :(
Squig

Aktualizacja do poprzedniego komentarza: Teraz działa i musiał być jakiś problem z buforowaniem. Użyłem <CTRL> + Refresh, ale przypuszczalnie było to buforowane gdzie indziej.
Squig

Czy istnieje strona firmy Microsoft, która to dokumentuje?
Coops

1
@CodeBlend Cóż, odsyłacz do bloga ScottGu jest dość oficjalny, ale przypuszczam, że najbardziej „oficjalną” stroną firmy Microsoft byłaby ta w witrynie MSDN: msdn.microsoft.com/en-us/library/vstudio/ ...
CraigTP

47

Upewnij się, że plik app_offline.htm ma co najmniej 512 bajtów długości. Zero bajtów app_offline.htm nie przyniesie żadnego efektu.

AKTUALIZACJA: Nowsze wersje ASP.NET/IIS mogą zachowywać się lepiej niż wtedy, gdy po raz pierwszy to napisałem.

AKTUALIZACJA 2: Jeśli używasz ASP.NET MVC, dodaj następujące elementy do web.config:

<?xml version="1.0"?>
<configuration>
    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true" />
    </system.webServer>
</configuration>

1
Miałem dokładną nazwę pliku z pustym plikiem i to zadziałało - pusta strona wyświetlana niezależnie od adresu URL, którego użyłem
Coops

Sprawdź ten link, aby sprawdzić problem z limitem 512 bajtów: codeproject.com/Articles/21319/…
Massood Khaari

Dotyczy to zwłaszcza starszych wersji IE, które mogą zastąpić stronę własnym komunikatem o błędzie
ChewToy Kwietnia

Scott Gu opisuje to również na swoim blogu.
Matt

2
Mogłem tylko ustawić moją witrynę MVC w trybie offline aplikacji, całkowicie zastępując plik web.config powyższym
Matthew Lock,

14

Należy pamiętać, że zachowuje się to tak samo w usługach IIS 6 i 7.x oraz .NET 2, 3 i 4.x.

Należy również pamiętać, że gdy obecny jest app_offline.htm, IIS zwróci następujący kod stanu http:

HTTP/1.1 503 Service Unavailable

To wszystko jest zgodne z projektem. Dzięki temu system równoważenia obciążenia (lub cokolwiek innego) może zobaczyć, że serwer jest wyłączony.


1
Na pewno nie chcesz, aby Twój system równoważenia obciążenia myślał, że serwer jest w trybie offline, ponieważ chcesz wyświetlać app_offline.htmużytkownikom w oknie obsługi?
Łukasz

2
@Luke: Lepszy przykład, dlaczego odpowiedź 503 jest pomocna: lepiej, aby robot indeksujący Google wiedział, że Twoja witryna obecnie nie działa, zamiast zdecydować się na indeksowanie treści „witryna nie działa” (i oznaczanie witryny jako zawierającej mnóstwo duplikatów zadowolony). Pomocne może być również, jeśli Twoja sieć CDN wykryje, że Twoje źródło jest wyłączone, a tym samym uniknie buforowania zawartości.
Brian

10

Możliwy problem z uprawnieniami

Wiem, że ten post jest dość stary, ale napotkałem podobny problem i mój plik został poprawnie napisany.

Pierwotnie utworzyłem plik app_offline.htm w innej lokalizacji, a następnie przeniosłem go do katalogu głównego mojej aplikacji. Z powodu mojej konfiguracji miałem wtedy problem z uprawnieniami.

Witryna zachowywała się tak, jakby jej nie było. Utworzenie pliku w katalogu głównym zamiast jego przenoszenia rozwiązało mój problem. (Lub możesz po prostu naprawić uprawnienia we właściwościach-> bezpieczeństwo)

Mam nadzieję, że to komuś pomoże.


4

Upewnij się, że app_offline.htmznajduje się on w katalogu głównym katalogu wirtualnego lub witryny sieci Web w usługach IIS.


Jest zdecydowanie w korzeniu. mam mój inetput \ wwwroot [WebsiteDirectory] \ app_offline.htm
Jack Marchetti

3

Upewnij się, że rozszerzenia nazw plików są widoczne w eksploratorze, a nazwa pliku jest rzeczywiście

app_offline.htm

nie

app_offline.htm.htm


0

Napotkałem problem bardzo podobny do pierwotnego pytania, którego rozwiązanie zajęło mi trochę czasu.

Po prostu na wypadek, gdyby ktoś inny pracował nad aplikacją MVC i znalazł drogę do tego wątku, upewnij się, że masz mapowanie wieloznaczne do odpowiedniej zdefiniowanej .Net aspnet_isapi.dll. Jak tylko to zrobiłem, mój app_offline.htm zaczął zachowywać się zgodnie z oczekiwaniami.


Kroki konfiguracji usług IIS 6

We właściwościach aplikacji usług IIS wybierz kartę Katalog wirtualny.

W obszarze Ustawienia aplikacji kliknij przycisk Konfiguracja.

W obszarze Mapy aplikacji z symbolami wieloznacznymi kliknij przycisk Wstaw.

Wpisz C: \ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_isapi.dll, kliknij OK.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.