Gincsai Gábor MSDN Kompetencia Központ Budapesti Műszaki és Gazdaságtudományi Egyetem Automatizálási és Alkalmazott Informatikai Tanszék.

Slides:



Advertisements
Hasonló előadás
Felhasználói felületek és üzleti logika
Advertisements

C# nyelvi áttekintő A „Programozás C# nyelven (Illés Zoltán)”

Kamarai prezentáció sablon
„Esélyteremtés és értékalakulás” Konferencia Megyeháza Kaposvár, 2009
Weblap szerkesztés HTML oldal felépítése Nyitó tag Záró tag Nyitó tag Záró tag oldalfej tözs.
Felhasználói felületek és üzleti logika Bollobás Dávid ASP.NET
Kereskényi Róbert MSDN Kompetencia Központ Budapesti Műszaki és Gazdaságtudományi Egyetem Automatizálási és Alkalmazott Informatikai Tanszék.
Erőállóképesség mérése Találjanak teszteket az irodalomban
Felhasználói felületek és üzleti logika Bollobás Dávid ASP.NET
Social Networking alkalmazás fejlesztése ASP.NET 3.5-tel Árvai Zoltán Consultant, Trainer Számalk Oktatóközpont.
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
LINQ to DataSet Kereskényi Róbert
Jogában áll belépni?! Détári Gábor, rendszermérnök.
2 Forrás: The Standish Group International, Extreme Chaos, The Standish Group International, Inc., 2000.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
ASP.NET MVC 3 platform áttekintés
megismerése, mintaadatbázis létrehozása
A tételek eljuttatása az iskolákba
Stílus, mesteroldal, témák
Ember László XUBUNTU Linux (ami majdnem UBUNTU) Ötödik nekifutás 192 MB RAM és 3 GB HDD erőforrásokkal.
1. IS2PRI2 02/96 B.Könyv SIKER A KÖNYVELÉSHEZ. 2. IS2PRI2 02/96 Mi a B.Könyv KönyvelésMérlegEredményAdóAnalitikaForintDevizaKönyvelésMérlegEredményAdóAnalitikaForintDeviza.

Entity framework Krizsán Zoltán
Közös kinézet Mester oldal, témák, skin-ek, css Webalkalkalmazás fejlesztése ASP.NET-ben Krizsán Zoltán.
ASP.NET „röviden” Krizsán Zoltán ver: 0.2.
V 1.0 Szabó Zsolt, Óbudai Egyetem, Haladó Programozás Eseménykezelés ismétlés Névtelen metódusok (anonymous methods)
Authentication & Authorization Belinszki Balázs terméktámogató mérnök Juhász Mihály alkalmazásfejlesztési tanácsadó.
Microsoft Visual Web Developer Express Webfejlesztés Gubicza József.
Erős bástya – biztonsági újdonságok
9:30-9:50 Köszöntő és áttekintés 9:50-10:50 Active Directory újdonságok 10:50-10:55 Kérdések és válaszok 10:55-11:15 Kávészünet 11:15-11:45 Mi változott.
SharePoint Adminisztráció
Exchange kiszolgálók védelme Data Protection Manager 2007-tel – 1. rész Leltár - Újdonságok az Exchange 2007 SP1-ben Exchange kiszolgálók védelme Data.
Átállás.
Modularizált felépítés SzervermenedzsmentBiztonságDiagnosztika FTP szerver Finom fejlesztések Közös konfiguráció.
Szerkezeti elemek teherbírásvizsgálata összetett terhelés esetén:
Egyszerű webes alkalmazás fejlesztése Készítette: Simon Nándor.
Egyszerű webes alkalmazás fejlesztése
DRAGON BALL GT dbzgtlink féle változat! Illesztett, ráégetett, sárga felirattal! Japan és Angol Navigáláshoz használd a bal oldali léptető elemeket ! Verzio.
PHP VII Sütik, munkamenetek. Sütik Mi az a süti? A süti (cookie) állapotot tárol a felhasználó böngészőjében. Pl. ha egy oldalon beállítható, hogy milyen.
szakmérnök hallgatók számára
Felhasználók azonosítása és jogosultságai, személyre szabás Borsi Katalin és Fóti Marcell NetAcademia Oktatóközpont.
Az Orchard keretrendszer telepítése
Publikációs portál Analízis modell UML bázisú modellezés és analízis Csapat: UML7 (Percze Dániel, Rajnai Zoltán, Ráth István, Tóth Dániel, Vágó Dávid)
Az ASP.NET 2.0 futtatókörnyezet: az alapoktól az újdonságokig
Virág András MSDN Kompetencia Központ Budapesti Műszaki és Gazdaságtudományi Egyetem Automatizálási és Alkalmazott Informatikai Tanszék.
Gincsai Gábor MSDN Kompetencia Központ Budapesti Műszaki és Gazdaságtudományi Egyetem Automatizálási és Alkalmazott Informatikai Tanszék.
Kereskényi Róbert MSDN Kompetencia Központ Budapesti Műszaki és Gazdaságtudományi Egyetem Automatizálási és Alkalmazott Informatikai.
Meglévő ASP.NET 2.0 alkalmazás kiegészítése AJAX-szal
Kereskényi Róbert MSDN Kompetencia Központ Budapesti Műszaki és Gazdaságtudományi Egyetem Automatizálási és Alkalmazott Informatikai.
AszinkronitásSebesség Csökkentett szerver terhelés* Jobb hálózat kihasználás Felhasználói élmény Rövidebb válaszidők.
Fejlesztés PHP-NUKE portál rendszerre Horváth Zoltán Második Magyarországi PHP Konferencia március 27. Copyright PHP Konferencia,
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
A klinikai transzfúziós tevékenység Ápolás szakmai ellenőrzése
2006. Peer-to-Peer (P2P) hálózatok Távközlési és Médiainformatikai Tanszék.
1 Verseny 2000 gyakorlat ODBC Adatforrás létrehozása.
QualcoDuna interkalibráció Talaj- és levegövizsgálati körmérések évi értékelése (2007.) Dr. Biliczkiné Gaál Piroska VITUKI Kht. Minőségbiztosítási és Ellenőrzési.
Webprogramozó tanfolyam
1. Melyik jármű haladhat tovább elsőként az ábrán látható forgalmi helyzetben? a) A "V" jelű villamos. b) Az "M" jelű munkagép. c) Az "R" jelű rendőrségi.
Mérés és adatgyűjtés laboratóriumi gyakorlat - levelező Sub-VI és grafikonok 1 Mingesz Róbert V
Webprogramozó tanfolyam
User Account Management Endrődi Tamás (MCT, MCP, MCITP) GDF Informatikai Intézet vezetője SZÁMALK Oktatóközpont.
Illés Zoltán ELTE Informatikai Kar
> aspnet_regiis -i 8 9 TIPP: Az „Alap” telepítés gyors, nem kérdez, de később korlátozhat.
Christopher Chapman | MCT Content PM, Microsoft Learning, PDG Planning, Microsoft.
A KÖVETKEZŐKBEN SZÁMOZOTT KÉRDÉSEKET VAGY KÉPEKET LÁT SZÁMOZOTT KÉPLETEKKEL. ÍRJA A SZÁMOZOTT KÉRDÉSRE ADOTT VÁLASZT, VAGY A SZÁMOZOTT KÉPLET NEVÉT A VÁLASZÍV.
User Profiles Endrődi Tamás (MCT, MCP, MCITP) GDF Informatikai Intézet vezetője SZÁMALK Oktatóközpont.
Szebb és használhatóbb programok Vezérlőelemek dinamikus felhelyezése.
Ingyenes, online technikai kurzusok Microsoft Virtual Academy.
Előadás másolata:

Gincsai Gábor MSDN Kompetencia Központ Budapesti Műszaki és Gazdaságtudományi Egyetem Automatizálási és Alkalmazott Informatikai Tanszék Biztonság és jogosultság kezelés ASP.NET 2.0 környezetben

2 Tartalom  Membership szolgáltatás  Role manager szolgáltatás  Profilok használata  Egyéb újdonságok

3 Membership szolgáltatás  Felhasználók kezelése és azonosítása  Deklaratív elérés: Web Site Admin Tool  Programozott elérés: Membership API  Egyszerűsíti az űrlap alapú hitelesítést  Logika a felhasználó nevének és jelszavának ellenőrzésére, létrehozására stb.  Felhasználók bejelentkezési adatainak, e- mail címének stb. tárolása  Provider-alapú  rugalmas tárolás!

4 Tagság séma API Adatok SQL Server stb. Providerek Active Directory Active Directory Login LoginStatus LoginView stb. Membership MembershipUser SqlMembershipProvider ActiveDirectory- MembershipProvider stb. Vezérlők

5 Provider modell SQL Server Alkalmazás API Provider Interface Konfig ASP.NET.dll SQL Provider SQL Provider Access Provider Access Provider Egyéb Provider Egyéb Provider Access stb.

6 Provider Toolkit  Letölthető Starter Kit  Access adatbázist használó provider minta implementációja  Membership  Role Manager  Profil

7 Aspnet_regsql.exe  SqlMembershipProvider által használt adatbázis létrehozását segítő eszköz.

8 Milyen adatbázist hoz létre?

9 <membership defaultProvider="AspNetSqlMembershipProvider„ userIsOnlineTimeWindow="15"> <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, …" connectionStringName="LocalSqlServer" enablePasswordRetrieval="[true|false]" enablePasswordReset="[true|false]" requiresQuestionAndAnswer="[true|false]" applicationName="/" requiresUnique ="[true|false]" passwordFormat="[Clear|Encrypted|Hashed]" maxInvalidPasswordAttempts="5" passwordAttemptWindow="10" passwordStrengthRegularExpression="" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1" /> <membership defaultProvider="AspNetSqlMembershipProvider„ userIsOnlineTimeWindow="15"> <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, …" connectionStringName="LocalSqlServer" enablePasswordRetrieval="[true|false]" enablePasswordReset="[true|false]" requiresQuestionAndAnswer="[true|false]" applicationName="/" requiresUnique ="[true|false]" passwordFormat="[Clear|Encrypted|Hashed]" maxInvalidPasswordAttempts="5" passwordAttemptWindow="10" passwordStrengthRegularExpression="" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1" /> SqlMembershipProvider beállítása web.config

10 Membership osztály System.Web.Security  Statikus függvények a tagsági feladatokra.  Felhasználó létrehozása és törlése  Információk elkérése a felhasználóról  Új jelszó létrehozása  Belépés ellenőrzése  Provider beállítások elérése.

11 Felhasználó ellenőrzése ASP.NET v1.X Stored Procedures Data Access Layer (DAL) Business Logic Layer (BLL)

12 if( Membership.ValidateUser( UserName.Text, Password.Text ) ) { RedirectFromLoginPage(UserName.Text,RememberMe.Checked ); } else { // TODO: Nem sikerült belépni } if( Membership.ValidateUser( UserName.Text, Password.Text ) ) { RedirectFromLoginPage(UserName.Text,RememberMe.Checked ); } else { // TODO: Nem sikerült belépni } Felhasználó ellenőrzése ASP.NET v2.0

13 try { } catch( MembershipCreateUserException e ) { // Miért nem sikerült létrehozni a felhasználót switch( e.StatusCode ) { case MembershipCreateStatus.DuplicateUsername: … case MembershipCreateStatus.Duplicate … case MembershipCreateStatus.InvalidPassword: … default: … } try { } catch( MembershipCreateUserException e ) { // Miért nem sikerült létrehozni a felhasználót switch( e.StatusCode ) { case MembershipCreateStatus.DuplicateUsername: … case MembershipCreateStatus.Duplicate … case MembershipCreateStatus.InvalidPassword: … default: … } Új felhasználó létrehozása C#

14 MembershipUser osztály System.Web.Security  Regisztrált felhasználót reprezentáló osztály.  Tulajdonságok a felhasználó adatainak elkérésére / beállítására.  A Membership osztály függvényei ezt adják vissza.

15 if( Membership.ValidateUser( UserName.Text, Password.Text ) ) { MembershipUser user = Membership.GetUser( UserName.Text ); user.Comment = "0"; // Hibás próbálkozások törlése RedirectFromLoginPage( UserName.Text, RememberMe.Checked ); } else { MembershipUser user = Membership.GetUser( UserName.Text ); if( user != null ) { // Hibás próbálkozások számának növelése string count = Convert.ToInt32( user.Comment ) + 1; // Ha 4-nél több, akkor kitiltjuk if( count > 4 ) user.IsApproved = false; // Hibás próbálkozások számának frissítése user.Comment = count.ToString(); } if( Membership.ValidateUser( UserName.Text, Password.Text ) ) { MembershipUser user = Membership.GetUser( UserName.Text ); user.Comment = "0"; // Hibás próbálkozások törlése RedirectFromLoginPage( UserName.Text, RememberMe.Checked ); } else { MembershipUser user = Membership.GetUser( UserName.Text ); if( user != null ) { // Hibás próbálkozások számának növelése string count = Convert.ToInt32( user.Comment ) + 1; // Ha 4-nél több, akkor kitiltjuk if( count > 4 ) user.IsApproved = false; // Hibás próbálkozások számának frissítése user.Comment = count.ToString(); } Felhasználó kitiltása C#

16 Login vezérlők  Felület és logika a biztonsággal kapcsolatos feladatokhoz Login Password- Recovery Password- Recovery LoginStatus LoginName LoginView CreateUser- Wizard CreateUser- Wizard Change- Password Change- Password Tagság és szerepkör kezelés

17 Login Controls  Felhasználó beléptetése  Jelszó emlékeztető  Jelszó csere

18 Tartalom  Membership szolgáltatás  Role manager szolgáltatás  Profilok használata  Egyéb újdonságok

19 Role Manager szolgáltatás  Szerep alapú jogosultság kezelés készen  Deklaratív elérés: Web Site Admin Tool  Programozott elérés: Roles API  Egyszerűbb szerep alapú jogosultság kezelés űrlap alapú hitelesítés esetén  Minden kérésnél szerepekhez rendeli a felhasználót  Tárolja a szerepkörök adatait  Provider-alapú  rugalmas tárolás!

20 Szerepkör kezelés séma Role API Adatok SQL Server stb. Providerek Authorization Manager Authorization Manager Login LoginStatus LoginView stb. Vezérlők Roles SqlRole- Provider AuthorizationStore- RoleProvider stb. WindowsToken- RoleProvider

21 Role Manager bekapcsolása  A szerepkör kezelés alapértelmezés szerint nincs engedélyezve.  Engedélyezzük a web.config-ban: web.config

22 <roleManager enabled="[true|false]" defaultProvider="AspNetSqlRoleProvider" createPersistentCookie="[true|false]" cacheRolesInCookie="[true|false]" cookieName=".ASPXROLES" cookieTimeout="00:30:00" cookiePath="/" cookieRequireSSL="[true|false]" cookieSlidingExpiration="[true|true]" cookieProtection="[None|Validation|Encryption|All]" domain="" maxCachedResults="25" > <add applicationName="/" connectionStringName="LocalSqlServer" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider,System.Web,…" /> <roleManager enabled="[true|false]" defaultProvider="AspNetSqlRoleProvider" createPersistentCookie="[true|false]" cacheRolesInCookie="[true|false]" cookieName=".ASPXROLES" cookieTimeout="00:30:00" cookiePath="/" cookieRequireSSL="[true|false]" cookieSlidingExpiration="[true|true]" cookieProtection="[None|Validation|Encryption|All]" domain="" maxCachedResults="25" > <add applicationName="/" connectionStringName="LocalSqlServer" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider,System.Web,…" /> Role Manager beállítása web.config

23 Roles osztály System.Web.Security  Átjáró a Role Management API-hoz  Legfontosabb feladatokhoz statikus függvények  Szerepek létrehozása / törlése  Felhasználók szerephez rendelése  Felhasználók eltávolítása egy szerepből  Provider beállítások elérése

24 // Ha nem létezik a szerepkör, létrehozzuk if( !Roles.RoleExists("Bloggers" ) ) { Roles.CreateRole( "Bloggers" ); } // Elkérjük az aktuális felhasználót string name = Membership.GetUser().Username; // Hozzáadjuk a szerepkörhöz Roles.AddUserToRole( name, "Bloggers" ); // Ha nem létezik a szerepkör, létrehozzuk if( !Roles.RoleExists("Bloggers" ) ) { Roles.CreateRole( "Bloggers" ); } // Elkérjük az aktuális felhasználót string name = Membership.GetUser().Username; // Hozzáadjuk a szerepkörhöz Roles.AddUserToRole( name, "Bloggers" ); Használata C#

25 Szerepkör cache  Ha a süti engedélyezve van  Titkosított lista a szerepkörökről  Nem kell adatbázishoz fordulni minden kérésénél  Ha a süti nincs engedélyezve  A Role Manager továbbra is működik  Az első alkalommal lekérdezni a szerepeket  Az oldalon található többi hivatkozás a cache-elt listát használja.

26 Role Management  Web Site Admin Tool  Felhasználók kezelése

27 Tartalom  Membership szolgáltatás  Role manager szolgáltatás  Profilok használata  Egyéb újdonságok

28 Profilok  Felhasználói adatok perzisztens tárolása  Erősen típusos elérés (  Session)  Felolvasás igény esetén (  Session)  Perzisztens (  Session)  Bejelentkezett és névtelen felhasználóknak  Saját típusok támogatása  Elérés HttpProfileBase segítségével  Provider-alapú  rugalmas tárolás!

29 Profil séma Profilok Profil adatok SQL Server Express Expressstb.stb. ProfileBaseProfileBase ProfileCommonProfileCommon stb.stb. Profil providerek SqlProfileProviderSqlProfileProvider SQL Server

30 // Cím és téma belállítása Profile.Title = "Gina Blooooogja"; // Szerző azonosítójának beállítása Profile.AuthorID = new Guid(user.ProviderUserKey.ToString()); // Fénykép beállítása Profile.Photo = myPhoto; // Cím és téma belállítása Profile.Title = "Gina Blooooogja"; // Szerző azonosítójának beállítása Profile.AuthorID = new Guid(user.ProviderUserKey.ToString()); // Fénykép beállítása Profile.Photo = myPhoto; <add name="Photo" type="System.Drawing.Image" serializeAs="Binary"/> <add name="Photo" type="System.Drawing.Image" serializeAs="Binary"/> Profil definíció és elérése C# web.config

31 Egyedi típusok  Type attribútummal adható meg a típus  Teljesen meghatározott névvel (FQN) kell rá hivatkozni  serializeAs hogyan sorosítsa  Binary | Xml | String  serializeAs="Binary„  Sorosíthatónak kell lennie a típusnak  serializeAs="String„  Típus konverziót támogatni kell

32 public partial class _Default : System.Web.UI.Page { … protected ProfileCommon Profile { get { return ((ProfileCommon)(this.Context.Profile)); } } … } public partial class _Default : System.Web.UI.Page { … protected ProfileCommon Profile { get { return ((ProfileCommon)(this.Context.Profile)); } } … } Hogyan működik? Az oldal generált osztálya ProfileBase-ből származó generált osztály, ami tartalmazza a profil adatokat A generált oldal osztály tartalmazza a Profile tulajdonságot. C#

33 Profil csoportok  Tulajdonságokat csoportosíthatjuk  kulcsszóval definiáljuk  Csoportok nem ágyazhatók egymásba

34 // Beállítjuk a blog címét Profile.BlogData.Title = "Gina Bloooogja"; // Beállítjuk az alcímet Profile.BlogData.SubTitle = "Mert blogolni jó :)"; // Beállítjuk a blog címét Profile.BlogData.Title = "Gina Bloooogja"; // Beállítjuk az alcímet Profile.BlogData.SubTitle = "Mert blogolni jó :)"; Profil csoport létrehozása web.config

35 Anonymous profil  Alapértelmezés szerint nincs engedélyezve.  Azonosított felhasználó ID-jával indexeli  Anonymous profil engedélyezése  Engedélyezzük az anonymous azonosítást  Határozzuk meg, mely profil tulajdonságokkal rendelkezzen az anonymous felhasználó  Anonymous ID-val indexeli az adatokat.

36 Anonymous profil web.config

37 <anonymousIdentification enabled="[true|false]" cookieName=".ASPXANONYMOUS" cookieTimeout="69:10:40" cookiePath="/" cookieRequireSSL="[true|false]" cookieSlidingExpiration="[true|false]" cookieProtection="[None|Validation|Encryption|All]" cookieless="[UseUri|UseCookies|AutoDetect|UseDeviceProfile]" domain="" /> <anonymousIdentification enabled="[true|false]" cookieName=".ASPXANONYMOUS" cookieTimeout="69:10:40" cookiePath="/" cookieRequireSSL="[true|false]" cookieSlidingExpiration="[true|false]" cookieProtection="[None|Validation|Encryption|All]" cookieless="[UseUri|UseCookies|AutoDetect|UseDeviceProfile]" domain="" /> Anonymous azonosítás  Sütivel, vagy süti nélküli (URL munging) web.config

38 Eseménykezelő neve Leírás AnonymousIdentification_ Creating Az anonymous ID létrehozása előtt váltódik ki. Profile_MigrateAnonymous A felhasználó belépésekor váltódik ki, hogy ha az anonymous felhasználók is tárolhatnak adatok a Profilba, lehessen ezeket az információkat átmigrálni a belépett felhasználó profiljába. Profile_Personalize A profil betöltődése előtt váltódik ki, hogy lehessen saját profilt is betölteni. Profile_ProfileAutoSaving A profil mentése előtt váltódik ki, hogy a saját típusokat tartalmazó profilokat testreszabhassuk. Profil események  A profil szolgáltatás és az anonymous azonosítás globális eseményeket vált ki.

39 void Profile_MigrateAnonymous( Object sender, ProfileMigrateEventArgs e) { if( Profile.Title == null ) Profile.Title = Profile.GetProfile(e.AnonymousID).Title; } void Profile_MigrateAnonymous( Object sender, ProfileMigrateEventArgs e) { if( Profile.Title == null ) Profile.Title = Profile.GetProfile(e.AnonymousID).Title; } Anonymous felhasználó migrálása global.asax

40 <profile enabled="[true|false]" defaultProvider="AspNetSqlProfileProvider" automaticSaveEnabled="[true|false]" inherits=""> <add applicationName="/" connectionStringName="LocalSqlServer" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlProfileProvider, …" /> <profile enabled="[true|false]" defaultProvider="AspNetSqlProfileProvider" automaticSaveEnabled="[true|false]" inherits=""> <add applicationName="/" connectionStringName="LocalSqlServer" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlProfileProvider, …" /> Profil szolgáltatás beállítása web.config

41 Profil  Saját profil létrehozása  Regisztráció  Profil adatok módosítása

42 Tartalom  Membership szolgáltatás  Role manager szolgáltatás  Profilok használata  Egyéb újdonságok

43 web.config titkosítása  Bizalmas információ a web.config-ban  Pl: adatbázishoz kapcsolódási adatok  aspnet_regiis tudja titkosítani  A.NET fel tudja olvasni, számunkra transzparens módon aspnet_regiis –pef ”ConnectionStrings” ”c:\Blog” –prov ”DataProtectionConfigurationProvider”

44 Nem ASP.NET fájlok védelme  Cassini  Alapértelmezés szerint védi  Web.config alapján  IIS 6.0  Alapértelmezésben nem védi  Az IIS nem továbbítja a kérést  Web.config-ban megadható, hogy védje

45 Összefoglalás  Biztonság sokkal kevesebb kóddal  Login kontrollok kódolás nélkül  Kiterjeszthető, rugalmas modell  Beépített webes adminisztrációs felület  Nem újdonság, megoldás!

46 További információk  Fejlesztői Portál:   Webfejlesztés témaközpont:   ASP.NET honlap   MSDN ASP.NET Developer Center   Visual Studio 2005 MSDN Documentation   Visual Web Developer 2005 Express Edition   Visual Web Developer 2005 Express Edition MSDN documentation   ASP.NET 2.0 Quickstart tutorial   Scott Guthrie blogja 

47 Kérdések és válaszok Értékelőlapok!

48 © 2006 Microsoft Corporation. Minden jog fenntartva. Az előadás csupán tájékoztató jellegű, a Microsoft Magyarország a benne szereplő esetleges hibákért vagy tévedésekért semmilyen felelősséget nem vállal.