W ASP.NET często rzucane wyjątki warto ładnie obsługiwać. Brak jakiegokolwiek zajęcia się nimi prędzej czy później skończy się fatalnie dla programisty: poprzez wyjawienie newralgicznych danych lub też po prostu poprzez zyskanie złej opinii.
Jednym ze sposobów ukrycia błędów przed użytkownikiem jest prawidłowe skonfigurowanie sekcji customErrors w pliku web.config. Niestety mimo wielu prób nie udało mi się uzyskać tam informacji o ostatnim błędzie poprzez metodę:
Server.GetLastError();
Rozwiązaniem znalezionym przy pomocy google jest skorzystanie z Global.asax i metody application_Error.Tam wyjątek można zserializować i wrzucić do sesji, a następnie przekierować użytkownika do ładnie wyglądającej strony.
Może rozwiązanie nie idealne, ale dotychczas spełniające swoje zadanie.
czwartek, 29 października 2009
Burza magnetyczna
Znalezione:
Burza magnetyczna
A co z ludźmi posiadającymi rozruszniki serca?
Klucze:
- zniszczenie całościowe (lub częściowe) sieci elektrycznych krajów uprzemysłowionych,
- brak zapasów w postaci transformatorów gotowych do użycia,
- czas produkcji jednej sztuki to 12 miesięcy (sic!)
Duża, odnotowana burza magnetyczna:
- przy burzy średniej wielkości szacowana ilość ludzi bez prądu - 130 milionów... 4x Polska.
- miała miejsce w roku 1859 (na przełomie sierpnia i września)
- prąd indukowany w przewodach pozwalał na przesyłanie wiadomości telegraficznych mimo odłączonych baterii
- zaczęło się od plam na Słońcu - po 18h dotarły do Ziemii
- burza takiej wielkości występuje średnio raz na 500 lat
Burza magnetyczna
A co z ludźmi posiadającymi rozruszniki serca?
Klucze:
- zniszczenie całościowe (lub częściowe) sieci elektrycznych krajów uprzemysłowionych,
- brak zapasów w postaci transformatorów gotowych do użycia,
- czas produkcji jednej sztuki to 12 miesięcy (sic!)
Duża, odnotowana burza magnetyczna:
- przy burzy średniej wielkości szacowana ilość ludzi bez prądu - 130 milionów... 4x Polska.
- miała miejsce w roku 1859 (na przełomie sierpnia i września)
- prąd indukowany w przewodach pozwalał na przesyłanie wiadomości telegraficznych mimo odłączonych baterii
- zaczęło się od plam na Słońcu - po 18h dotarły do Ziemii
- burza takiej wielkości występuje średnio raz na 500 lat
czwartek, 7 sierpnia 2008
wtorek, 8 lipca 2008
MCSD && MCAD
No i stało się:
"
"
If you are pursuing a Microsoft Certified Application Developer (MCAD) or Microsoft Certified Solution Developers (MCSD) certification, we encourage you to finish it within the next twelve months. On March 31, 2009, Microsoft Learning will retire 12 exams that focus on developer and Microsoft SQL Server technologies."
Ciekawe kiedy napiszą tak o mcts .net 2.0...
piątek, 4 lipca 2008
Linq - Specified cast is not valid.
Często zdarza się, że w trakcie wstawiania/aktualizacji rekordów rzucany jest błąd: "
Mi udało się przegrzebać przez wyniki wyszukiwania i odpowiedź jest dość śmieszna:
Jeśli tabelka aktualizowana ma klucz obcy, do innej tabelki, której klucz główny nie jest liczbą, to klops. Ogólne przesłanie -> nie używać kluczy głównych w formie np. guid. Tylko sztuczne są dobre :-)
Specified cast is not valid."
nieszczęśliwie stos niczego ciekawego nie pokazuje. Dotarcie do przyczyny zajmuje trochę czasu a i google początkowo nie pokazuje odpowiednich wyników.Mi udało się przegrzebać przez wyniki wyszukiwania i odpowiedź jest dość śmieszna:
Jeśli tabelka aktualizowana ma klucz obcy, do innej tabelki, której klucz główny nie jest liczbą, to klops. Ogólne przesłanie -> nie używać kluczy głównych w formie np. guid. Tylko sztuczne są dobre :-)
czwartek, 3 lipca 2008
Kiedy są problemy z ID
| 11.10.2007 at 01:43AM PST, ID: 20255081 |
Rank: Sage
Did you try SELECT @@IDENTITY
Example
public Client CreateClient( string name )
{
OleDbCommand command = null;
Client c = new Client();
c.Name = name;
try
{
command = Connection.CreateCommand()
command.CommandText = "insert into Clients (name) values(@name)";
command.Parameters.Add("@n
command.ExecuteNonQuery();
// Retrieve ID
command.CommandText = "SELECT @@IDENTITY";
c.ID = Int64.Parse(command.Execut
return c;
}
finally
{
command.Dispose();
}
wtorek, 3 czerwca 2008
HttpWebRequest i inni.
A więc dzisiaj potrzebowałem napisać aplikacyjkę do tray-a, żeby testować czy serwer działa - dłuższa historia po co. Pisany kod odczytywał jeden z plików z serwera i jeśli powiodło się, informował, że wszystko jest ok.
Niestety po kilku pętlach otrzymywałem exception Time out. Dochodzenie wskazało:
HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(url + "?a=" + DateTime.Now.Ticks);
wr.ContentType = "application/x-www-form-urlencoded";
wr.KeepAlive = false;
wr.Method = "GET";
wr.MaximumAutomaticRedirections = 5;
wr.AllowAutoRedirect = true;
wr.Timeout = 6000;
wr.ReadWriteTimeout = 6000;
wr.CachePolicy = new System.Net.Cache.RequestCachePolicy(System.Net.Cache.RequestCacheLevel.NoCacheNoStore);
using (HttpWebResponse response = (HttpWebResponse)wr.GetResponse())
{
WebHeaderCollection headers = response.Headers;
if (response.StatusCode == HttpStatusCode.OK && !isLastVisible || isFirstTime)
{
isFirstTime = false;
ShowMessage("Serwis moto działa!", ToolTipIcon.Info);
isLastVisible = true;
ChangeIcon(true);
}
response.Close();
}
response.Close() -> winny. Prawdopodobnie response.Close() może zniknąć z tego kawałka bo using je wywoła samoczynnie, ale skoro teraz działa, to nie będę kombinował.
Niestety po kilku pętlach otrzymywałem exception Time out. Dochodzenie wskazało:
HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(url + "?a=" + DateTime.Now.Ticks);
wr.ContentType = "application/x-www-form-urlencoded";
wr.KeepAlive = false;
wr.Method = "GET";
wr.MaximumAutomaticRedirections = 5;
wr.AllowAutoRedirect = true;
wr.Timeout = 6000;
wr.ReadWriteTimeout = 6000;
wr.CachePolicy = new System.Net.Cache.RequestCachePolicy(System.Net.Cache.RequestCacheLevel.NoCacheNoStore);
using (HttpWebResponse response = (HttpWebResponse)wr.GetResponse())
{
WebHeaderCollection headers = response.Headers;
if (response.StatusCode == HttpStatusCode.OK && !isLastVisible || isFirstTime)
{
isFirstTime = false;
ShowMessage("Serwis moto działa!", ToolTipIcon.Info);
isLastVisible = true;
ChangeIcon(true);
}
response.Close();
}
response.Close() -> winny. Prawdopodobnie response.Close() może zniknąć z tego kawałka bo using je wywoła samoczynnie, ale skoro teraz działa, to nie będę kombinował.
Subskrybuj:
Posty (Atom)