Lab 6: ASP.NET 2.0 Providermodellen

Relevanta dokument
Lab 5: ASP.NET 4.5 Site Navigation

Lab 5: ASP.NET 2.0 Site Navigation

Övning: Arbeta med Azure Explorer

Labb 4: ASP.NET 2.0 Medlemskap, Inloggningskontroller, Rollhantering

Language Integrated Query, LINQ, och databaser

Stored procedure i ASP.NET

Labb 2: ASP.NET 4.5 Data Access

Installationsanvisningar VisiWeb. Ansvarig: Visi Closetalk AB Version: 2.3 Datum: Mottagare: Visi Web kund

Labb 4: ASP.NET 4.5 Medlemskap, Inloggningskontroller, Rollhantering

Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer.

Alla rättigheter till materialet reserverade Easec

JobOffice SQL databas på server

Stored procedure i ASP.NET

Labb 3: ASP.NET 4.5 Anpassningar av användargränssnittet: Master Pages, Teman, och Kontroller

Labb 1: Skapa en webbsite

INSTALLATION...3 ATT KOMMA IGÅNG...3 PROGRAMMETS DESIGN...4 LÄGGA TILL TABELL...4 EDITERA TABELL...4 EDITERA RELATION...5 SPARA OCH AVSLUTA...

Översikt. Installation av EasyPHP 1. Ladda ner från Jag använder Release Installera EasyPHP.

ADO.NET Murach Kapitel 17-20

Innehåll. Dokumentet gäller från och med version

Uppdateringsguide v6.1

Övning MS SQL och MVC del 2

Övning 1: Skapa virtuell maskin för utveckling.

Innehållsförteckning Introduktion Installation, konfiguration & Matchning Installation på primära domänkontrollanten...

Generiska konstruktioner. Kursbokens kapitel 13

Årsskiftesrutiner i HogiaLön Plus SQL

1.Lär känna MS SQL Observera. Tips. Förberedelse

FactoryCast HMI. Premium & Quantum PLC. MySQL Server och FactoryCast HMI databastjänst

Övning Dictionary. Övning 1. Steg 1: På din virtuella maskin, starta Visual Studio.

Labb 1: Skapa en website

Komponenter med COM (och COM+/VC++ 7.0)

Arbeta med databas. Översikt. Lektion 1: Arbeta med Entity Data Models. Arbeta med Entity Data Models. LINQ (Language Integrated Query).

Lär känna MS SQL 2008 / Övning. Observera. Tips. Förberedelse

Labora&on 1 Introduk&on &ll utvecklingsmiljön övningar/uppgi<er

Mål med lektionen! Repetera och befästa kunskaperna.

Sync Master startas via Task Scedule (schemaläggaren). Programmet kan köras på servern utan att någon är inloggad på servern.

Introduktion till Entity Framework och LINQ. Källa och läs mer

Förutsättningar: Konto på Azure, kontot har fått File Storage tillagt, Azure Powershell version eller senare.

Programinstallation Datorbaserat handsmörjningssystem

Administrationsmanual ImageBank 2

Årsskiftesrutiner i HogiaLön Plus SQL

public DataSet GenerateDataSet(SqlCommand dbcommand, String tablename, out String errormsg) { errormsg = "";

Uppdatera Easy Planning till SQL

Årsskiftesrutiner i HogiaLön Plus SQL

Filbeskrivningar Eller på särskild CD skiva

MVC med Javascript och Ajax. Filip Ekberg

AVCAD 4.0 för Windows

Alla rättigheter till materialet reserverade Easec

Arg-administratörens guide till Umbraco v 1.2.1

Services + REST och OAuth

Räkna med ASP.NET Web Forms

Allt du behöver för crowdsourcing

Inledande programmering med C# (1DV402) Ditt första C#-program med Visual Studio

ASP.NET MVC. Copyright Mahmud Al Hakim Innehåll

Räkna med ASP.NET MVC 3

Kom igång med Etikettskrivaren 1. Ladda ner följande installationsprogram Ladda ner Drivrutiner för etikettskrivare Zebra

LEX INSTRUKTION - REPLIKERING

Instruktioner för att skapa konton i MV-login

Labora&on 1 Introduk&on &ll utvecklingsmiljön övningar/uppgi<er

KARLSTADS UNIVERSITET 12/8/09 informatik & datavetenskap Johan Öfverberg, Kerstin Andersson Laboration 4, ISG A04 och DVG A08 HT-09

Spara papper! Skriv inte ut sammanfattning utan ladda ner PDF!

Lab 2: ASP.NET 2.0 Data Access

Programmering A C# VT Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson

Sökmotoroptimering. Google Search Console

Programmering B med Visual C

Lektion 2, Grundläggande funktioner i ASP.NET

Tentamen Programmeringsteknik II Inledning. Anmälningskod:

Labb 1: Skapa en webbsite

Ladda upp filer fra n PLC till PC

Filsäkerhet i Windows NT (NTFS)

Instruktion för användande av Citrix MetaFrame

Installation av datafil för lokal lagring av e-post i Microsoft Outlook 2016

Övning Arbeta med klasser

Sync Master startas via Task Scedule (schemaläggaren). Programmet kan köras på servern utan att någon är inloggad på servern.

Användarhantering Windows 7 I denna laboration kommer vi att skapa nya användare och grupper och titta på hur man hantera dessa.

Byggsektorns Miljöberäkningsverktyg Användarmanual

Laboration 10 - Eclipse

Diagnostisktprov Utveckla i Azure

Objektorienterad Programmering (OOP) Murach s: kap 12-16

Instruktion för installation av etikettskrivare 2.27

Uppdatera Easy Planning till SQL

DOTNETNUKE SKOLNING Skapat: den 20 november 2012

Instruktion för användande av Citrix MetaFrame

1. Logga in som Wordpress-administratör till den sajen som ni vill säkerhetskopiera.

Flytt av. Vitec Mäklarsystem

Lösningsförslag till omtentamen för TDA540 Objektorienterad Programmering

Instruktion för användande av Citrix MetaFrame

F4. programmeringsteknik och Matlab

Innehåll Översikt: Arbeta med databaser... 3 Översikt databaser i SQL Server... 4 Översikt databaser i SQL Server... 5 Hur information lagras i SQL

Vad kännetecknar en god klass. Vad kännetecknar en god klass. F12 Nested & Inner Classes

Detta dokument skall ge en kortfattad introduktion till Jasmine installationen vid DSV.

Boss installationsmanual förberedelser

Dokumentation för VLDIT AB. Online classroom

OOP Objekt-orienterad programmering

Innehåll. Föreläsning 3. javax.naming.context. javax.sql.datasource. Vad är JDBC? Java Naming and Directory Interface(JNDI) Viktigaste metoder:

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

Mumble FAQ. Jack-Benny Persson 2 maj 2012

Workshop IBA internet based assessment

PROGRAMMERING A VC# 2008 EXPRESS UTVECKLINGSVERKTYGET VISUAL C#

Del2 Klasser, medlemmar och arv Ämnesområden denna föreläsning:

Skapa din egen MediaWiki

Transkript:

Lab 6: ASP.NET 2.0 Providermodellen Den stora finessen med Providermodellen är enkelheten att skapa sin egna provider för att kunna anpassa en tjänst utefter de behov man har. Den gör tillståndshantering väldigt enkelt och flexibelt. Exempelvis kanske man vill att användarinformation ska lagras i en XML fil istället för i en databas. Man skapar då en egen "provider" som hanterar detta och konfigurerar webbapplikationen att nyttja den skräddarsydda versionen. Beräknad tid för att slutföra labben ca: 60 minuter I den här labben skall du skapa en egen site map provider som hämtar s site map data från MyComics databasen istället för från en XML fil. Detta möjliggör att site map data lagras i MyComics database till sammans med data om böckerna. Syfte med labben är dubbelt, dels att få prova på att skapa egna providers, dels att skapa en bättre förståelse för providermodellen I ASP.NET. Redovisning Redovisning av uppgiften sker i form av en enkel laborationsrapport med koden bifogad som text. Labbförberedelser Kopiera katalogen där filerna från föregående labb finns till en ny katalog. Döp om katalogen till Lab6

Sida 2 Övning 1 Review the SiteMap table in the MyComics database I den hör övningen skall vi granska en tabell eom heter SiteMap i MyComics databasen. Varje rad i tabellen representerar en nod i site mappen. Uppgift 1. Se till så att säkerhetsdata basen är Ok 2. Granska tabellen Beskrivnig Kontrolera så att säkerhetsdatabasen har följt med vid kopieringen enligt instruktionerna I labb 5 a. Starta Visual Studio 2005 och öppna Server Explorer fönstret. b. Om du saknar anslutning till MyComics databasen, lägg till en anslutning med Microsoft SQL Server Data source enligt nedan: c. Expandera MyComics anslutningen MyComics database Tables. d. Högerklicka på tabellen SiteMap och välj Show Table Data. Du skall nu ha data som ser ut, beroende på ditt val av sidor och namn, ungefär så här:

Sida 3

Sida 4 Övning 2 Skriv en egen site map provider I den hör övningen skall du skapa en egen map provider klass med namnet MyComicsSiteMapProvider. Den skapar en site map av data i SiteMap tabellen i MyComics databasen. uppgift 1. Oppna webbsiten 2. Skapa MyComicsSite MapProvider klassen Beskrivning a. Starta Microsoft Visual Studio 2005 och öppna labb6 med File Open Web Site a. Högerklicka på App_Code mappen och välj Add New Item. b. I dialogen välj Class som template och ange MyComicsSiteMapProvider som filnamn. c. Klicka på Add. d. Lägg till using uttryck till de som redan finns i MyComicsSiteMapProvider: using System.Data.SqlClient; using System.Collections.Specialized; e. Modifiera klassdeklarationen så att MyComicsSiteMapProvider ärver från System.Web.StaticSiteMapProvider: public class MyComicsSiteMapProvider : StaticSiteMapProvider 3. Lägg till privata fält a. Lägg till följande fält till MyComicsSiteMapProvider klassen static readonly string _errmsg1 = "Missing attribute: connectionstringname"; string _connect; SiteMapNode _root; 4. Gör Override på Initialize Metoden a. Lägg till följande metod til MyComicsSiteMapProvider klassen: public override void Initialize (string name, NameValueCollection attributes) { base.initialize (name, attributes); if (attributes == null) { throw new ConfigurationException (_errmsg1);

Sida 5 _connect = attributes["connectionstringname"]; if (String.IsNullOrEmpty (_connect)) throw new ConfigurationException (_errmsg1); Initierar SiteMapProvider implementationen, inklusive eventuella resurser som kan behövas för att ladda site map data från källan. Metoden skapar inte någon site map utan förbereder bara SiteMapProvider objektet för att göra det. 5. Gör Override på BuildSiteMap Metoden a. Lägg till följande metod till MyComicsSiteMapProvider klassen: public override SiteMapNode BuildSiteMap () { // Return immediately if this method has been called before if (_root!= null) return _root; // Create the root SiteMapNode _root = new SiteMapNode (this, "Default.aspx", "Default.aspx", "Home"); AddNode(_root, null); // Query the database for other SiteMapNodes SqlConnection connection = new SqlConnection (ConfigurationManager.ConnectionStrings[_connect].ConnectionString); try { connection.open (); SqlCommand command = new SqlCommand ("SELECT Title, Url, Roles FROM SiteMap", connection); SqlDataReader reader = command.executereader (); int url = reader.getordinal ("Url"); int title = reader.getordinal ("Title"); int roles = reader.getordinal ("Roles"); // Add the nodes to the site map while (reader.read ()) {

Sida 6 SiteMapNode node = new SiteMapNode (this, reader.getstring(url), reader.getstring(url), reader.getstring(title)); if (!reader.isdbnull (roles)) { string rolenames = reader.getstring (roles); if (!String.IsNullOrEmpty (rolenames)) { string[] rolelist = rolenames.split (new char[] { ',', ';', 512); node.roles = rolelist; AddNode (node, _root); finally { connection.close (); // Return the root SiteMapNode return _root; BuildSiteMap metoden anropas för att ladda och bygga site map noderna från källan. 6. Gör override på IsAccessibleTo User metoden a. Lägg till följande metod till MyComicsSiteMapProvider klassen: public override bool IsAccessibleToUser (HttpContext context, SiteMapNode node) { if (!SecurityTrimmingEnabled node.roles == null node.roles.count == 0) return true; foreach (string role in node.roles) {

Sida 7 if (string.equals (role, "*", StringComparison.InvariantCultureIgnoreCase) context.user.isinrole (role)) return true; return false; IsAccessibleToUser metoden tar ett Boolskt värde som indikerar hur vida ett SiteMapNode objekt skall visas för användaren i ett visst kontext. Klippt från MSDN webben SiteMapProvider s IsAccessibleToUser method takes an optimistic approach to security trimming: it assumes nodes that lack roles information are accessible to everyone. In practice, you might want to take the opposite approach and assume that no one has access to nodes that lack roles information if security trimming is enabled. 7. Gör override på GetRootNode Core metoden a. Lägg till följande metod till MyComicsSiteMapProvider klassen: protected override SiteMapNode GetRootNodeCore() { BuildSiteMap (); return _root; GetRootNodeCore metoden ger en parent provider i en provider herarki möjlighet att extrahera ett SiteMapNode objekt.

Sida 8 Övning 3 Prova MyComicsSiteMapProvider I denna övning skall du registrera den site map provider som du skapat och testa den med MyComics Webb siten. Uppgift 1. Avregistrera den nuvarande site map providern beskrivning a. Högerklicka på Web.sitemap och välj Delete för att ta bort den. b. Öppna Web.config och radera följande sektion: <sitemap> <providers> <remove name="aspnetxmlsitemapprovider" /> <add name="aspnetxmlsitemapprovider" type="system.web.xmlsitemapprovider, securitytrimmingenabled="true" sitemapfile="web.sitemap" /> </providers> </sitemap> c. Starta applikationen. Vad händer? 2. Registrera MyComicsSite MapProvider a. Lägg till följande section till <system.web> sektionen i Web.config, för att ersätta det du nyss raderat: <sitemap defaultprovider="mycomicssitemapprovider" enabled="true"> <providers> <add name="mycomicssitemapprovider" type="mycomicssitemapprovider" securitytrimmingenabled="true" connectionstringname="mycomicsconnectionstring" /> </providers> </sitemap> b. Spara och stäng Web.config. 3. Testa MyComicsSite a. Starta applikationen för att verifiera att inga fel uppstår. b. Kontrollera så att navigationen ser ut som i föregående labb och Admin länken saknas

Sida 9 MapProvider (p.g.a. de säkerhets inställningar du gjorde I labb 4). c. Klicka på Login länken I sidans överkant och logga in som Administratör. d. Kolla så att Admin åter igen dyker upp I navigationen. e. Prova länkarna I navigationen så att de fungerar.

Sida 10 Sammanfattning I den här labben har vi tittat på: Hur man skapar en egen site map provider Hur man registrerar en egen site map provider Sätt dig en stund och gå igenom koden för MyComicsSiteMapProvider. Fundera över följande frågor: Wad är ändamålet med följande kod i MyComicsSiteMapProvider.Initialize? if (attributes == null) throw new ConfigurationException (_errmsg2); _connect = attributes["connectionstringname"]; if (String.IsNullOrEmpty (_connect)) throw new ConfigurationException (_errmsg2); Finns det någon begränsning I hur många rollnamn (role names)som MyComicsSiteMapProvider kan ansluta till en enskild site map node? (Tipps: Svaret finns i BuildSiteMap metoden.)