Miesiąc: Kwiecień 2012

Przełączenie aplikacji asp.net w tryb offline

Co rozumiem przez tryb offline ? Jest to przejście w taki tryb pracy gdzie wszystkie requesty przekierowane są na pewien landing page może informować np. że jest przeprowadzana aktualizacja, albo aplikacja jest przenoszona na nowy serwer, albo np. trwa aktualizacja serwera baz danych itp. Dzięki temu wysyłamy użytkownikom czytelny komunikat co się dzieje i nie stresujemy ich serwerem w ogóle nie odpowiadającym na requesty albo rzucający exceptionami na lewo i prawo bo schemat bazy się zmienił w między czasie. W ASP.NET od wersji 2.0 można to osiągnąć wrzucając plik  app_offline.htm do głównego katalogu aplikacji. Po tym wszystkie requesty zostaną przekierowane na ten plik i użytkownik zobaczy cokolwiek tam wrzucimy. Funkcja ta działa także w ASP.NET MVC . Przykładowy plik może wyglądać tak (podaję za blogiem Scotta Guthrie)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Site Under Construction</title>
</head>
<body>
<h1>Under Construction</h1>

<h2>Gone to Florida for the sun...</h2>

<!--
Adding additional hidden content so that IE Friendly Errors don't prevent
this message from displaying (note: it will show a "friendly" 404
error if the content isn't of a certain size).

<h2>Gone to Florida for the sun...</h2>
<h2>Gone to Florida for the sun...</h2>
<h2>Gone to Florida for the sun...</h2>
<h2>Gone to Florida for the sun...</h2>
<h2>Gone to Florida for the sun...</h2>
<h2>Gone to Florida for the sun...</h2>
<h2>Gone to Florida for the sun...</h2>
<h2>Gone to Florida for the sun...</h2>
<h2>Gone to Florida for the sun...</h2>
<h2>Gone to Florida for the sun...</h2>
<h2>Gone to Florida for the sun...</h2>
<h2>Gone to Florida for the sun...</h2>
<h2>Gone to Florida for the sun...</h2>
-->
</body>
</html>

Jak widać jest to zwykły plik html. Dla starszych wersji IE ważne jest aby rozmiar dokumentu przekraczał 512 bajtów, inaczej pokaże się przyjazna strona z IE zamiast naszego landing page.

Błąd „The File Exists” podczas próby zapisania nowego pliku w katalogu tymczasowym

Jeśli chcemy zapisać plik tym czasowy np. w ten sposób

string tempFileName = Path.GetTempFileName();

 File.WriteAllText(tempFileName, "example");

Możemy dostać komunikat o błędzie „The File exists”. Wbrew pozorom nie jest to spowodowane istnieniem pliku o tej samej nazwie, zresztą dla metody WriteAllText nie stanowi to problemu – plik zostałby nadpisany. Powodem wystąpienia tego błędu jest ograniczenie mówiące , że  w katalogu c:windowstemp może znajdować się tylko 65535  plików. Po przekroczeniu tej wielkości kolejne próby utworzenia pliku tymczasowego kończą się wystąpieniem wyjątku. Aby temu zaradzić trzeba oczywiście wyczyścić katalog z plikami tymczasowymi.