Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Hibakeresés és Hibaelhárítás

Hasonló előadás


Az előadások a következő témára: "Hibakeresés és Hibaelhárítás"— Előadás másolata:

1 Hibakeresés és Hibaelhárítás
Ötödik nap Turóczy Attila diái alapján: Csirmaz Péter MCP, MCTS, MCPD

2 Beépített Debug lehetőségek Hibakövetés - Tracing
Tematika Beépített Debug lehetőségek Hibakövetés - Tracing Webalkalmazás felügyelete - Monitoring Deployment és Cache

3 Debug bekapcsolása Web.config <configuration> <system.web>
<compilation debug="true"> </compilation> </configuration> Visual Studio a projekt első futtatásakor rákérdez, hogy akarjuk-e aktiválni a debugger módot

4 Egyedi hibaoldalak beállítása
Web.config <configuration> <system.web> <customErrors defaultRedirect="SiteErrorPage.aspx" mode="RemoteOnly"> </customErrors> </configuration>

5 Fontosabb Státuszkódok
Státuszkód csoport Leírás 1xx Információs – Kérést fogadtuk 2xx Sikeres végrehajtás 3xx Átirányítás szükséges 4xx Kliens oldali hiba(syntax), vagy a szerver nem tudja értelmezni a kapott kérést 5xx Szerver oldali hiba, az egyébként érvényes kérés nem teljesíthető

6 Hibakód specifikus hibaoldalak beállítása
Web.config <configuration> <system.web> <customErrors defaultRedirect="SiteErrorPage.aspx" mode="RemoteOnly"> <error statusCode="403" redirect="RestrictedAccess.aspx" /> </customErrors> </configuration>

7 Beépített Debug lehetőségek
System.Diagnostics névtér Célszerű a Page_Load függvényben használni Debugger.Break() – Megállítja a kódot Debug.WriteLine(„”) – Outputra ír Debug.WriteIf(felétel) – Feltételes kiíratás Webalkalmazásnál is szükség van debuggolásra. Természetesen ezt is nagyon jól támogatja az ASP.NET 3.5 Debugger.Break() – Megállítja a kódot Olyan mint egy breakpoint

8 Debug példa

9 Beépített Debug lehetőségek Hibakövetés - Tracing
Tematika Beépített Debug lehetőségek Hibakövetés - Tracing Webalkalmazás felügyelete - Monitoring Deployment és Cache

10 Jól jön ha beleakarunk nézni a kontextusunkba (értsd: debug++)
Trace ASP.NET-ben Jól jön ha beleakarunk nézni a kontextusunkba (értsd: debug++) Engedélyezés: Web.config-ban Kézzel (System.Web szekcióba) Web Site Administration Tool-lal Hozzáférés:

11 Trace beállítási lehetőségek
Web.config beállítás Leírás Enabled Trace ki-be kapcsolása pageOutput Trace adatokat az aktuális oldal aljára dump-olja vagy ne? localOnly Csak a webszerverről (helyi gép) érkező kéréseknél van trace traceMode Idő vagy kategória alapú rendezés requestLimit Hány kérés információt tároljon a cache-ben mostRecent A legfrissebb kéréseket, (cache update) vagy a legrégebbieket tárolja? <trace enabled = ”true” mostRecent=”true” traceMode=”SortByTime” localOnly=”false” />

12 Trace szekciók Szekció Leírás Request Details Kérés információk
Trace Info. Teljesítmény információk az életciklust illetően Control Tree Az oldalon található control-ok adatai (mérete stb..) Session State Session változók Application State Application változók Cookies Collections Cookiek gyűjteménye. Böngésző és Server között Headers Collection HTTP Headers Form Collection Elposztolt adatok QueryString Collection Url-ben levő változók Server Variables Minden szerver oldali változó

13 Beépített Debug lehetőségek Hibakövetés - Tracing
Tematika Beépített Debug lehetőségek Hibakövetés - Tracing Webalkalmazás felügyelete - Monitoring Deployment és Cache

14 Monitoring Web.config <healthmonitoring> szekció
<bufferModes/> Ha kötegelten szeretnénk naplózni <providers/> Megmondja hova kell naplózni <profiles/> Milyen esetben kell naplózni <rules/> Mikor, mit hova kell naplózni. Összefogja az egészet. <eventMappings/> Azok az eseményeket amiket naplózni kell Ha a webalkalmazásunk viselkedését nyomon szeretnénk követni akkor azt legegyszerűbben a beépített health monitoring-gal tehetjük meg. Ennek az a lényege, hogy definiáljuk a következőket a web.config <healthmonitoring> szekciójában. <healthMonitoring enabled="true"> <bufferModes/> Ha kötegelten szeretnénk naplózni <providers/> Megmondja hova kell naplózni (Eventlog, SQL …) <profiles/> Milyen esetben kell naplózni <rules/> Mikor, mit hova kell naplózni. Összefogja az egészet. <eventMappings/> Azok az eseményeket amiket naplózni kell </healthMonitoring>

15 Monitoring példa <healthMonitoring enabled="true"> <rules> <add name="All Errors Rule" eventName="All Errors" provider=„EventLogProvider" profile="Critical"/> </rules> </healthMonitoring>

16 Beépített Debug lehetőségek Hibakövetés - Tracing
Tematika Beépített Debug lehetőségek Hibakövetés - Tracing Webalkalmazás felügyelete - Monitoring Deployment és Cache

17 Web Setup Project -> Windows Installer
Webalkalmazások telepítése Egy szerverem van Copy – Paste Updatelni kell? Overwrite! Na és ha kell némi kontroll? Registry Előkövetelmények SMS Web Setup Project -> Windows Installer

18 Telepítés konfigurálása
Telepítés indításának feltételei Project / View / Launch Conditions Search Target Machine Launch Conditions File Search Contitions FileName Folder Depth MinDate,MaxDate MinSize,MaxSize MinVersion, MaxVersion Property

19 Telepítése konfigurálása
File Launch Conditions Condition InstallUrl Message

20 Telepítési feltételek konfigurálása
VersionNT Version9x ServicePackLevel WindowsBuilD SystemLanguageID AdminUser PhysicalMemory IISVERSION WindowsBuild=2600 AND ServicePackLevel=1

21 Copy Website Tool Egyes fájlok másolása Teljes oldal másolása Egyes fájlok szinkronizálása Teljes oldal szinkronizálása NINCS VERZIÓ KEZELÉS!

22 Webalkalmazások előfordítása
Allow This Precompiled Site To Be Updateable Use Fix Naming and Single Page Assemblies Enable Strong Naming On Precompiled Assemblies Allow Partially Trusted Caller

23 Caching Mi az a Caching? Két alapvetően különböző technika:
Application Cache Page Output Cache Az alkalmazásunkat gyorsabbá tehetjük úgy is, ha a sokak által, sokszor használt adatokat a memóriába tároljuk. Az ASP.NET által támogatott technikák: Application Cache: Adathozzáférés költséget, toljuk be a memóriába Page Output Cache: Az egész oldalt húzzuk be a cache-be ha látogatott

24 Application Cache Adatokat a memóriába! A Cache osztály
Ez egy gyűjtemény! Adatok beszúrása: Insert, vagy Add Adatok törlése: Remove Adatra való hivatkozás: Cache[”azon”] Mindenki ugyanahhoz a cache-hez fér hozzá Az Application Cache esetében a memóriában tárolhatunk olyan adatokat, melyek előállítása egyébként erőforrás igényes. Tipikusan az adatbázisban, fájlban tárolt, gyakran használt adatok lehetnek ilyenek. Megvalósítása a Cache osztállyal lehetséges.

25 A cache-ben lévő adat nem érvényes
Veszélyforrások A cache-ben lévő adat nem érvényes Az adat nincs a cache-ben (valami eltüntette ) Fogy a memória Függőség miatt Érvényességi idő lejárta Az adatok memóriában való tárolásának vannak veszélyei is, ugyanis, ha valami törli az adatunkat, arról nem küld semmilyen információt.

26 Adat elhelyezése a Cache- ben I.
Insert( kulcs, objektum); Függőség: Fájltól Másik cache-beli adattól Insert( kulcs, objektum, függőség ); new System.Web.Caching.CacheDependency( Server.MapPath( ”emberek.xml” ) ); Ahhoz, hogy cache-ben lévő adat mindig érvényes legyen, függőségeket határozhatunk meg, azok memóriában való elhelyezésekor. Vagyis megmondhatjuk a cache osztályunknak hogy törölje a memóriából az objektumot, ha egy fájl, adatbázis tartalma megváltozik, vagy egy másik cache beli objektum törlődik.

27 Adat elhelyezése a Cache- ben II.
Érvényességi idő Abszolút idő DateTime.Now.AddMinutes( perc ) „Csúszóablakos” idő (utolsó használat óta eltelt) new TimeSpan( O, P, M ) Insert( kulcs, objektum, függ., abszolút, uhoe_idő); Az objektumunk-hoz érvényességi időt is rendelhetünk, amely lejártával a cache osztály törli azt a memóriából. Az érvényességi idő lehet abszolút, pl.: az elhelyezés után 2 perc után konyec, vagy csúszó idő, ami az utolsó használat óta eltelt időt jelenti. NoAbosoluteExpiration –enum

28 Adat elhelyezése - advaced
Prioritás beállítása System.Web.Caching.CacheItemPriority Default High Low Törlődéskor esemény meghívása Callback függvény Insert(kulcs, objektum, függ., abszolútidő, csúszóidő, prioritás, callback fgv); Automatikus törléskor a kisebb prioritásúakat törli a GB. Elhelyezéskor az objektumunkhoz kapcsolhatunk metódust, amely a törlödésekor fog végrehajtódni.

29 Egyes lapokra: Egyszerű Page Output Cache <%@ OutputCache
Duration= ”60” VaryByParam= ”None” %> A Page direktíva után kell felvenni az OutputCache direktívát, melynek legegyszerűbb formája a következő Duration az cache-ben töltendő idő másodpercekben VaryByParam = None erről mindjárt részletesen is beszélek. Ezt a formát használva, a lapra vonatkozó első kérés után a lefordított lap másolata bekerül a cache-be és jó esetben 60 másodpercig, minden kérést innen szolgálnak ki. Ez statikus weblapoknál tökéletes, de mi van akkor ha a lap tartalma a felhasználó inputjától függ? Például van egy oldal, ahol egy legördülő listából ki tudom választani, hogy melyik város térképét szeretném megnézni, kiválasztom Szolnokot, erre Budapestet mutat nekem, csak azért mert az első kérésnél a csóka erre volt kiváncsi és ez került be a cache-be. Hogy lehet ezen segíteni?

30 Több verzió a cache-ban
OutputCache Duration= ”60” VaryByParam= ”Varos; TextBox1” %> A VaryByParam-ba felsorolhatunk paramétereket. Ebben az esetben a Cache-be annyiszor kerül be a lap másolta, ahány különböző értéke van ezeknek a paramétereknek. Az előző példánknál maradva érkezik egy kérés Budapestre, a lefordított lap bekerül a cache-be, majd ezután minden BP-re vonatkozó kérés innen kerül kiszolgálásra, ha jön egy Szolnok, megnézi hogy van-e szolnokos a cache-be, ha nincs lefordítja, elküldi, elhelyezi a cach-ben.

31 <%@ OutputCache Hová pakoljuk a másolatokat? Duration= ”60”
VaryByParam= ”Varos” Location= ”Server” %> Server, ServerAndClient, None, Any, Client Arra is képesek vagyunk, hogy meghatározzuk, hol legyen a lapunk cach-elve

32 Futás idejű beállítások
Példák: Response.Cache.SetExpires(DateTime.Now.AddSeconds(60)); Response.Cache.SetCacheability(HttpCacheability.Server); Response.Cache.VaryByParams[”Varos”]=true;

33 Az alkalmazás összes lapjára
(Web.config) <caching> <outputCacheSettings> <outputCacheProfiles> <add name="OneMinuteProfile" enabled="true" duration="60"/> </outputCacheProfiles> </outputCacheSettings> </caching> Lapokon OutputCache CacheProfile="OneMinuteProfile" VaryByParam="none" %>

34 © 2006 Microsoft Corporation. All rights reserved
© 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.


Letölteni ppt "Hibakeresés és Hibaelhárítás"

Hasonló előadás


Google Hirdetések