tag:blogger.com,1999:blog-131090892024-03-08T10:30:27.055+01:00Michiel van Otegem, IT ComposerBlog by Mchiel van Otegem. Stay informed about my views on software development.
<p>
Michiel is Senior Software Architect at <a href="http://www.sogeti.nl">Sogeti Netherlands</a>, author of articles and several books such as <i>Sams Teach Yourself XSLT in 21 Days</i> and <i>ASP.NET 4.0 - de basis</i> (Dutch), and speaker.
</p>
<p>
<b>Disclaimer</b><br>
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.</p>Michiel van Otegemhttp://www.blogger.com/profile/08071564548306767306noreply@blogger.comBlogger91125tag:blogger.com,1999:blog-13109089.post-1148678385030917802006-05-26T23:19:00.001+02:002006-05-27T22:07:15.310+02:00Michiel's blog verhuisd<P>Het hing al een tijdje in de lucht, maar ik ben er eindelijk toe gekomen om het ook daadwerkelijk te doen: m'n blog verhuizen van <A href="http://aspnl.blogspot.com">http://aspnl.blogspot.com</A> naar <A href="http://www.vanotegem.nl">http://www.vanotegem.nl</A>. Waarom? Omdat ik op mijn eigen site iets meer controle heb dan bij Blogger. Bovendien heeft dasBlog meer mogelijkheden dan Blogger, zoals categorieen. Aangezien ik nu in twee talen ga bloggen, is dat ook best wel belangrijk. De berichten op de home pagina zullen in het Engels zijn. Wie de Nederlands berichten wil zien kan kijken/abonneren op <A href="http://www.vanotegem.nl/CategoryView,category,Nederlands.aspx">http://www.vanotegem.nl/CategoryView,category,Nederlands.aspx</A>.</P>Michiel van Otegemhttp://www.blogger.com/profile/08071564548306767306noreply@blogger.com0tag:blogger.com,1999:blog-13109089.post-1148330779305988262006-05-22T22:39:00.000+02:002006-05-22T22:46:19.306+02:00Michiel schrijft (weer) een boekZoals al opgemerkt ben ik een tijd stil geweest, en het zou wel eens kunnen dat dit in de komende tijd niet veel beter wordt. Mijn stilte werd/wordt veroorzaakt door een hardnekkige griep/verkoudheid die al zo'n week of 4 rondzingt binnen de familie. We beginnen het zo onderhand spuugzat te worden... Mijn komende (mogelijke) "stilte" is te wijten aan het feit dat ik een nieuw boek ga schrijven. Het kan natuurlijk ook dat ik daardoor juist geinspireerd wordt voor m'n blog, maar dat zullen we zien.<br /><br />Na het schrijven van <a href="http://www.amazon.com/gp/product/0672323184/103-1939330-4825438?v=glance&n=283155">Sams Teach Yourself XSLT in 21 Days</a> dacht ik "dat nooit meer". Het bloed kruipt echter waar het niet gaan kan, en ik heb van de week een contract getekend om een Nederlands boek te schrijven over ASP.NET 2.0 genaamd <em>ASP.NET 2.0 - de basis</em>. Ik ben nu druk bezig met het bepalen van de hoofdstukken en wat daarin moet komen, zodat ik strakjes als een speer kan gaan schrijven.Michiel van Otegemhttp://www.blogger.com/profile/08071564548306767306noreply@blogger.com1tag:blogger.com,1999:blog-13109089.post-1144797471064336352006-04-12T01:09:00.000+02:002006-04-12T01:17:51.076+02:00Windows Core: eindelijk een Windows server zonder GUI?Een van de geweldige features van IIS7 is het feit dat je alleen die binaries op de machine hoeft te zetten die je nodig hebt. Dat is snel, heeft weinig diskruimte nodig, en is heel erg veilig omdat er geen binaries zijn die niet gebruikt worden die zouden kunnen leiden tot beveiligingsproblemen. Microsoft is bezig met een vergelijkbare aanpak voor Windows (Server). "Longhorn" Server zal dit nog niet hebben, maar de kans is behoorlijk dat de versie daarna deze manier van werken wel zal ondersteunen. Wij wachten met smart op iets dat de meeste andere servers al sinds jaar en dag ondersteunen. Wat dat betreft heeft Microsoft wel een gevoel voor humor, want ze zeggen zelf over deze beweging en de ontwikkeling van Monad "leading Windows back to the 1970s".Michiel van Otegemhttp://www.blogger.com/profile/08071564548306767306noreply@blogger.com1tag:blogger.com,1999:blog-13109089.post-1144184063358388572006-04-04T22:52:00.000+02:002006-04-04T22:54:23.383+02:00Weer MVPVoor het 4e jaar op rij mag ik me weer Microsoft Most Valuable Professional noemen. Wederom in de categorie Visual Developer, ASP/ASP.NET. Bedankt Microsoft voor de erkenning.Michiel van Otegemhttp://www.blogger.com/profile/08071564548306767306noreply@blogger.com1tag:blogger.com,1999:blog-13109089.post-1143631945455374462006-03-29T13:22:00.000+02:002006-03-29T13:32:25.456+02:00Serieus testenBij het opruimen van mijn blog reader kwam ik nog een aardig bericht tegen waar ik destijds geen melding van gemaakt had, maar die ik toch wel even wil delen met de lezers: <a title="Site: ScottGu's Blog" href="http://weblogs.asp.net/scottgu/archive/2005/11/06/429694.aspx" target="_blank">Behind the Scenes Video and some Interesting ASP.NET 2.0 Stress Stats</a>.<br /><br />Deze post van Scott Guthrie vertelt wat over het testen van ASP.NET 2.0, en de cijfers zijn haast ongelooflijk. Die er voor mij uitsprong: er worden zo'n <strong>15 miljard HTTP request per dag</strong> gedaan op de testservers. Dit is nou precies waar Microsoft een zogenaamde "competitive edge" heeft, zoals ik eerder al eens opmerkte in <a href="http://aspnl.blogspot.com/2005/09/waarom-iis-60-veiliger-dan-apache-is.html">Waarom IIS 6.0 veilig(er dan Apache) is</a>.Michiel van Otegemhttp://www.blogger.com/profile/08071564548306767306noreply@blogger.com0tag:blogger.com,1999:blog-13109089.post-1143631129048766912006-03-29T13:11:00.000+02:002006-05-23T15:36:10.973+02:00Soms zijn nieuwsbrieven toch wel handigIk beschouw mijn computer echt als een gebruiksvoorwerp. Ik ben dus niet zoals veel ontwikkelaars die hun systeem helemaal instellen voor optimaal gebruik en vele keyboard shortcuts kennen. Nee, ik doe pas wat als ik het nodig heb, of er het nut van inzie. Zo had ik wel eens van ClearType gehoord, en wist ik dat dit in Windows Vista zit. In Vista leest de tekst op een LCD scherm er daardoor prettiger dan als je "normale" instellingen hebt. Zoals met Windows XP, waarvan ik tot vandaag dacht dat het geen ClearType had. Dit veranderde door de "At Home and At Work" nieuwsbrief van Microsoft. Ik weet nog steeds niet waarom ik dat ding nooit uitgezet heb, maar vandaag was ik blij dat ik dat niet gedaan had. Via de nieuwsbrief kwam ik bij <a href="http://go.microsoft.com/?linkid=4722683" target="_blank">Flat-panel monitors: 5 things to know</a> en daarin werd gezegd dat je ClearType op Windows XP ook kan instellen. Nou, dat klopt, en het werkt heerlijk. Nu kun je e.e.a. instellen via de Appearance tab van je display settings, maar je kunt ook lui doen en gaan naar <a href="http://www.microsoft.com/typography/cleartype/tuner/1.htm">Turn on Windows XP ClearType</a> en de boel meteen "tunen".Michiel van Otegemhttp://www.blogger.com/profile/08071564548306767306noreply@blogger.com2tag:blogger.com,1999:blog-13109089.post-1143447278639706312006-03-27T10:13:00.000+02:002006-03-27T10:14:38.676+02:00Voor wie nog twijfels had over de schaalbaarheid van ASP.NET 2.0Lees <a id="viewpost.ascx_TitleUrl" href="http://weblogs.asp.net/scottgu/archive/2006/03/25/441074.aspx">Handling 1.5 Billion Page Views Per Day Using ASP.NET 2.0</a><a href="http://weblogs.asp.net/scottgu/archive/2006/03/25/441074.aspx"> </a>op de blog van Scott Guthrie.Michiel van Otegemhttp://www.blogger.com/profile/08071564548306767306noreply@blogger.com0tag:blogger.com,1999:blog-13109089.post-1143198967200063832006-03-24T12:08:00.000+01:002006-03-24T12:16:35.996+01:0024-27 April: DevConnections<a href="http://www.devconnectionseurope.com/"><img style="FLOAT: right; MARGIN: 0px 0px 10px 10px; WIDTH: 125px; CURSOR: hand; HEIGHT: 125px" alt="" src="http://www.devconnectionseurope.com/banners/2006/colo125x125eng21k.gif" border="0" /></a>Al vanaf 2000 had DevConnections plannen om naar Europa te komen, maar ze zijn nu eindelijk klaar voor de oversteek. Van 24-27 april is in Nice een combinatie van DevConnections events voor Visual Studio, SQL Server, ASP.NET en Exchange. DevConnections heeft altijd het neusje van de zalm aan sprekers en is dan ook absoluut de moeite waard om naartoe te gaan. Dat kan ik zowel als voormalig bezoeker als voormalig spreker op events van DevConnections beamen. Ik kan daar nog aan toevoegen dat het feest altijd een spetterende gebeurtenis is, waar ook de sprekers (aanspreekbaar) zijn. Neem dus vooral eens een kijkje op <a href="http://www.devconnectionseurope.com/">http://www.devconnectionseurope.com/</a>.Michiel van Otegemhttp://www.blogger.com/profile/08071564548306767306noreply@blogger.com0tag:blogger.com,1999:blog-13109089.post-1141652221491123592006-03-06T14:36:00.000+01:002006-03-06T14:37:01.506+01:00(Bijna) alles dat je ooit over ASP.NET 2.0 Membership en Roles wil wetenZie de zeer uitgebreide blog post van Scott Guthrie:<br /><a href="http://weblogs.asp.net/scottgu/archive/2006/02/24/438953.aspx">http://weblogs.asp.net/scottgu/archive/2006/02/24/438953.aspx</a>Michiel van Otegemhttp://www.blogger.com/profile/08071564548306767306noreply@blogger.com0tag:blogger.com,1999:blog-13109089.post-1141596340102534872006-03-05T22:52:00.000+01:002006-03-05T23:39:37.383+01:00Microsoft kijkt op DevDays teveel vooruitJa, ik ga naar de DevDays, iets wat de meeste ontwikkelaars zouden moeten doen. Dit jaar echter niet zonder dat ik kritiek heb op het programma. Terugdenkend aan vorig jaar moet ik eigenlijk zeggen dat toen hetzelfde gold, maar toen was ik daar als spreker minder mee bezig.<br /><br />Waarom kritiek? Omdat DevDays volgens mij teveel over "de toekomst" gaat. Kijk ik bijvoorbeeld naar de Development track, dan gaat zo'n 2/3 van de sessies over dingen die er nog niet zijn: C# 3.0 VB 9.0, WinFX. Wat heb ik daar als (gemiddelde) ontwikkelaar van applicaties vandaag aan? Nul, niks, nada, noppes. Wie is er dan gediend met dit soort informatie? De "elite" onder de ontwikkelaars, en Microsoft zelf natuurlijk die kunnen laten zien hoe mooi de wereld straks wordt. An sich daar niets mis mee, als je het maar in proportie doet tot wat de gemiddelde ontwikkelaar vandaag bij zijn projecten kan gebruiken. Er zijn ontwikkelaars die bijvoorbeeld nog geen gebruik kunnen maken van .NET 2.0 (bijvoorbeeld omdat ze met MCMS werken, waarvoor de tooling .NET 2.0 [nog] niet werkt), laat staan iets hebben aan wat er in 3.0 mogelijk is. Ik zou dus graag zien dat Microsoft zich komend jaar wat meer richt op de gemiddelde ontwikkelaar (toch de grootste groep lijkt me) en veel meer laat zien van het hier en nu dan van die geweldige roze wolk die de toekomst heet.Michiel van Otegemhttp://www.blogger.com/profile/08071564548306767306noreply@blogger.com0tag:blogger.com,1999:blog-13109089.post-1141595422869331612006-03-05T22:35:00.000+01:002006-03-15T21:58:19.496+01:00FormView/Details hell met een Calendar controlDit weekend zat ik te stoeien met een simpele CRUD pagina a la <a href="http://www.asp.net/QuickStart/util/srcview.aspx?path=~/aspnet/samples/data/GridViewMasterDetailsInsert.src">http://www.asp.net/QuickStart/util/srcview.aspx?path=~/aspnet/samples/data/GridViewMasterDetailsInsert.src</a>. Een van de velden was een datum veld, en als ik in Edit en Insert modus een Calendar control invoegde, dan ging er van alles mis in de event sfeer. Ten eerst kon het een aantal keer klikken duren voordat de kalendar daadwerkelijk een andere datum geselecteerd had, en als ik opsloeg was de datum geregeld alsnog verkeerd. Uiteindelijk bleek het euvel niets meer te zijn dan het feit dat ik de controls in Edit en Insert modus dezelfde naam gegeven had. Aangezien een naar TemplateField geconverteerd veld dit ook doet met de TextBox controls die standaard gebruikt worden leek me dat geen probleem.<br /><br />Vloekend dat de DetailsView/FormView niet bruikbaar zou zijn in de echte wereld ben ik wat andere dingen gaan proberen, totdat ik toch vond dat het moest kunnen werken en met frisse moed weer opnieuw begon. En ja hoor... daar werkte het ineens, door slechts die ene kleine wijziging. Misschien dat ik de jongens in Redmond even moet adviseren dat ze bij het genereren van templates de controls verschillende namen moeten geven...<br /><br />UPDATE:<br />Het blijkt dat dit proobleem alleen voorkomt in hele specifieke situaties. Als je een geheel neiuwe pagina maakt zonder opmaak, Master Pages, etc. werkt het allemaal prima. Alleen bij een bepaalde combinatie (welke is me op dit moment niet duidelijk) van onderdelen doet dit probleem zich voor.Michiel van Otegemhttp://www.blogger.com/profile/08071564548306767306noreply@blogger.com0tag:blogger.com,1999:blog-13109089.post-1140696543651604252006-02-23T12:52:00.000+01:002006-02-23T13:09:03.683+01:00.NET Pet Shop versie 4 (.NET 2.0)Enige jaren geleden was er nog al wat ophef over de zogenaamde .NET Pet Shop, een "best practices" applicatie die vergelijkbaar was met de Java Petstore. Destijds om te laten zien hoeveel beter .NET was op het gebied van productiviteit en performance. De Java community schreeuwde moord en brand omdat de .NET versie eigenlijk niet vegelijkbaar zou zijn (zie bijvoorbeeld <a href="http://www.onjava.com/pub/a/onjava/2001/11/28/catfight.html">Cat Fight in a Pet Store: J2EE vs. .NET</a>). Aangezien ik geen Java expert ben kan ik daar weinig over zeggen. Wel heeft de kritiek tot een 2e ronde geleid, maar zelfs daarover zijn de meningen verdeeld... (zie voor de studie van de Middleware Company: <a href="http://www.gotdotnet.com/team/compare/middleware.aspx">Comparing Microsoft .NET Framework Performance and Scalability to J2EE Application Servers</a>.<br /><br />Onlangs heeft Microsoft een nieuwe versie gemaakt, volledig gebaseerd op .NET 2.0 om laten zien hoevel handiger dat is dan .NET 1.1. Een vergelijking met de Java applicatie heb ik niet kunnen vinden. Zie <a href="http://msdn.microsoft.com/asp.net/default.aspx?pull=/library/en-us/dnbda/html/bdasamppet4.asp">Microsoft .NET Pet Shop 4: Migrating an ASP.NET 1.1 Application to 2.0</a>Michiel van Otegemhttp://www.blogger.com/profile/08071564548306767306noreply@blogger.com0tag:blogger.com,1999:blog-13109089.post-1140692591909935952006-02-23T12:00:00.000+01:002006-02-23T12:03:11.926+01:00ASP.NET 2.0 RSS Tool KitHet ASP.NET Team in Redmond is weer lekker bezig, ze bedenken de ene na de andere tool en bieden die aan voor download. De laatste: De ASP.NET 2.0 RSS Tool Kit. Deze tool kit bevat allerlei zaken om met RSS te werken. Onder andere een RSS DataSource die je kunt gebruiken met de data controls zoals GridView en DataList, en zaken om zelf RSS feeds aan te bieden.Michiel van Otegemhttp://www.blogger.com/profile/08071564548306767306noreply@blogger.com0tag:blogger.com,1999:blog-13109089.post-1140468691621712102006-02-20T21:49:00.000+01:002006-02-20T21:51:31.636+01:00Community Server 2.0 is er!Community Server 2.0 is er! Deze tool die onder andere gebruikt wordt voor de MSDN Forums en de ASP.NET Forums is geweldig voor het bouwen van online communities. Voor niet-commercieel gebruik is het gratis. ASPNL.com zal binnenkort op deze nieuwe versie overschakelen. Zie voor meer informatie <a href="http://communityserver.org/blogs/announcements/archive/2006/02/20/516100.aspx">http://communityserver.org/blogs/announcements/archive/2006/02/20/516100.aspx</a>Michiel van Otegemhttp://www.blogger.com/profile/08071564548306767306noreply@blogger.com0tag:blogger.com,1999:blog-13109089.post-1140449833116450562006-02-20T16:32:00.000+01:002006-02-20T16:37:16.216+01:00Nieuwe log trace listener voor Enterprise Library: RollingFlatFileTraceListenerMaakt een log file waarbij je in kunt stellen onder welke voorwaarden een nieuw bestand wordt toegevoegd (per dag, maand, als de file 50 MB groot is, etc.). Ook is in te stellen hoeveel bestanden bewaard moeten blijven.<br /><br />Download of werk mee via gotdotnet Workspaces: <a href="http://www.gotdotnet.com/Workspaces/Workspace.aspx?id=113101bc-f269-4bb4-be05-3a43008f7019">http://www.gotdotnet.com/Workspaces/Workspace.aspx?id=113101bc-f269-4bb4-be05-3a43008f7019</a>Michiel van Otegemhttp://www.blogger.com/profile/08071564548306767306noreply@blogger.com1tag:blogger.com,1999:blog-13109089.post-1140433185904412932006-02-20T11:57:00.000+01:002006-02-20T11:59:45.906+01:00Information Worker User GroupNee, mijn vertrek bij dotNED is niet omdat ik een nieuwe gebruikersgroep heb opgericht. Er is er echter wel een nieuwe user group voor Information Worker: <a href="http://www.diwug.nl">Dutch Information Worker User Group (DIWUG)</a>. Ik heb me alvast geregisteerd als "lid".Michiel van Otegemhttp://www.blogger.com/profile/08071564548306767306noreply@blogger.com0tag:blogger.com,1999:blog-13109089.post-1140433045285076522006-02-20T11:50:00.000+01:002006-02-20T11:57:25.493+01:00Vaarwel aan .NET user groupWellicht dat je het al vernomen had, maar sinds kort ben ik niet meer verbonden aan <a href="http://www.dotned.nl">.NET Gebruikersgroep Nederland dotNED</a>. Een uitleg zal een dezer dagen op de website en in de nieuwsbrief van dotNED verschijnen, en zal als volgt luiden:<br /><br /><strong>Michiel van Otegem zegt dotNED vaarwel</strong><br />dotNED oprichter Michiel van Otegem verlaat het bestuur van dotNED. Hij geeft het voorzittersstokje door aan Dennis Vroegop. Michiel is al bijna vier jaar geleden begonnen met het opzetten van de gebruikersgroep, wat in oktober 2002 tot de eerste van vele succesvolle bijeenkomsten heeft geleid. Michiel zelf over zijn vertrek:<br /><br /><em>Ik heb vier jaar lang de gebruikersgroep geleid volgens mijn visie, maar het is tijd dat anderen de richting gaan bepalen. Steeds maar hetzelfde is slecht voor iedere organisatie, en dus ook voor de gebruikersgroep. Nu het bestuur uitgebreid is naar 5 leden door de toevoeging van Thomas Huiijer en bezoeker van het eerste uur Hassan Fadili, heb ik er ook vertrouwen in dat de gebruikersgroep in goede handen is. Dat is natuurlijk wel belangrijk om mijn "kindje" los te kunnen laten. De andere reden voor mijn vertrek is dat, zeker met een klein bestuur zoals we hadden, je er ongezien toch veel tijd in stopt. Op zichzelf is dat geen probleem, maar ik merkte wel steeds vaker dat daardoor andere zaken bleven liggen. Mijn website ASPNL.com moet bijvoorbeeld nodig een facelift krijgen en ik wil weer wat meer artikelen gaan schrijven. Dat zijn dingen die alleen ik kan doen, terwijl de gebruikersgroep juist ontstaan is met het idee dat het een samenspel moet zijn tussen de bezoekers. Bijna alle bestuursleden zijn ook op die manier binnengekomen. "Voor en door .NET ontwikkelaars" zou je kunnen zeggen. Mijn vertrek betekent ook niet dat ik nooit meer op de bijeenkomsten zal komen, ik behoor immers tot de doelgroep. Ik wil iedereen die heeft bijgedragen aan het succes van dotNED en alle bezoekers van de afgelopen jaren heel hartelijk bedanken voor de steun. Ik wens verder de gebruikersgroep en het bestuur heel veel succes in de toekomst, en hoop dat we nog lang profijt zullen hebben van bijeenkomsten georganiseerd door dotNED.</em>Michiel van Otegemhttp://www.blogger.com/profile/08071564548306767306noreply@blogger.com2tag:blogger.com,1999:blog-13109089.post-1140426473375636992006-02-20T10:06:00.000+01:002006-02-20T10:07:53.376+01:00ASP.NET project migratie van VS2003 naar VS2005 tutorialVan Scott Guthrie's blog: <a href="http://weblogs.asp.net/scottgu/archive/2006/02/16/438354.aspx">http://weblogs.asp.net/scottgu/archive/2006/02/16/438354.aspx</a>Michiel van Otegemhttp://www.blogger.com/profile/08071564548306767306noreply@blogger.com0tag:blogger.com,1999:blog-13109089.post-1140426281410745342006-02-20T10:02:00.000+01:002006-02-20T10:04:41.426+01:00Nieuwe ASP.NET 2.0 Starter Kit: eBay Selling Starter KitLeuk, een third party starter kit van een partij waarvan ik dat niet meteen verwacht had: eBay. DeMichiel van Otegemhttp://www.blogger.com/profile/08071564548306767306noreply@blogger.com0tag:blogger.com,1999:blog-13109089.post-1140038886325590272006-02-15T22:27:00.000+01:002006-02-15T22:28:06.346+01:00ASP.NET Custom Controls bouwenGoed artikel van Dino Esposito: <a href="http://msdn.microsoft.com/asp.net/default.aspx?pull=/library/en-us/dnaspp/html/ASPNETContDev.asp">http://msdn.microsoft.com/asp.net/default.aspx?pull=/library/en-us/dnaspp/html/ASPNETContDev.asp</a>Michiel van Otegemhttp://www.blogger.com/profile/08071564548306767306noreply@blogger.com0tag:blogger.com,1999:blog-13109089.post-1139581133918200982006-02-10T15:18:00.000+01:002006-02-10T15:18:53.940+01:00Maak een Custom Control van je User ControlDavid Ebbo loopt je door de stappen heen<br /><a href="http://blogs.msdn.com/davidebb/archive/2005/10/30/487160.aspx">http://blogs.msdn.com/davidebb/archive/2005/10/30/487160.aspx</a>Michiel van Otegemhttp://www.blogger.com/profile/08071564548306767306noreply@blogger.com0tag:blogger.com,1999:blog-13109089.post-1138710628120876662006-01-31T13:25:00.000+01:002006-01-31T13:30:28.143+01:00Microsoft Expression CTPsEven een weekje met vakantie en je mist alweer vanalles.<br /><br />Microsoft heeft vorig jaar een aantal grafische paketten aangekondigd genaamd Expression. Van twee van de drie is nu een CTP beschikbaar:<br />- Grafisch design: <a href="http://Microsoft" familyid="'ecd88d39-b9fc-4816-8dae-60444b7c81e7&displaylang=">Microsoft Expression Graphic Designer</a><br />- UI design voor Vista: <a href="http://www.microsoft.com/downloads/details.aspx?familyid=ed9f5fb2-4cfc-4d2c-9af8-580d644e3d1d&displaylang=en">Microsoft Expression Interactive Designer</a><br /><br />We wachten met smart op de Web/ASP.NET versie.Michiel van Otegemhttp://www.blogger.com/profile/08071564548306767306noreply@blogger.com0tag:blogger.com,1999:blog-13109089.post-1137017118024531072006-01-11T22:38:00.000+01:002006-01-11T23:05:18.093+01:00WindowsImpersonationContext: kan dat niet makkelijker?Soms kom je dingen tegen dat je denkt... hadden ze dat nou niet ff makkelijker kunnen maken in het framework? Vandaag had ik er weer zo een, namelijk met de WindowsImpersonationContext. An sich is de context heel handig, gewapend met een zogenaamde token handle van een gebruikersaccount kun je de betreffende gebruiker impersoniseren. Dat is bijvoorbeeld nodig als toegang tot een netwerk share wilt delegeren, terwijl de rest van je applicatie gewoon werkt op basis van de ingelogde gebruiker. Dit komt met name in web scenario's nog wel eens voor.<br /><br />Het probleem is dat je om de token handle te krijgen op basis van een gebruikersnaam en wachtwoord je een Win32 call moet maken. Met andere woorden je moet unmanaged code aanroepen (help!). Het is niet echt heel moelijk, maar je moet weten welke referenties naar DLLs je moet maken, een IntPtr gebruiken, enzovoorts. Allemaal niet waar wij als ontwikkelaars op zitten te wachten. En dat terwijl het niet eens zo ingewikkeld is om de ontwikkelaar daarvan af te schermen door een simpele wrapper class. Voordeel daarvan zou ook meteen weer zijn dat er niet met /unsafe gecompileerd hoeft te worden, wat voor de meeste mensen toch wel eng is. Met zo'n wrapper class zou de gemiddelde ontwikkelaar het volgende maar hoeven te doen:<br /><br /><span style="font-family:courier new;font-size:85%;">Console.WriteLine("Huidige gebruiker: " + WindowsIdentity.GetCurrent().Name);<br />WrapperImpersonationContext context = new WrapperImpersonationContext(domain, username, password);<br />context.Enter();</span><br /><span style="font-family:courier new;font-size:85%;">// Voer code uit in context van ander gebruikersaccount<br />Console.WriteLine("Huidige gebruiker: " + WindowsIdentity.GetCurrent().Name);<br />context.Leave();<br />Console.WriteLine("Huidige gebruiker: " + WindowsIdentity.GetCurrent().Name);</span><br /><br />Nu vraag je je natuurlijk af hoe die wrapper class er dan uit zou moeten zien. Wel... als volgt:<br /><br /><span style="font-family:courier new;font-size:85%;">public class WrapperImpersonationContext<br />{<br /> [DllImport("advapi32.dll", SetLastError = true)]<br /> public static extern bool LogonUser(String lpszUsername, String lpszDomain,</span><br /><span style="font-family:courier new;font-size:85%;"> String lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken);</span><br /><span style="font-family:courier new;font-size:85%;"><br /> [DllImport("kernel32.dll", CharSet<br /> =System.Runtime.InteropServices.CharSet.Auto)]<br /> private unsafe static extern int FormatMessage(int dwFlags, ref IntPtr lpSource,<br /> int dwMessageId, int dwLanguageId, ref String lpBuffer, int nSize,<br /> IntPtr* Arguments);<br /><br /> [DllImport("kernel32.dll", CharSet = CharSet.Auto)]<br /> public extern static bool CloseHandle(IntPtr handle);<br /><br /> [DllImport("advapi32.dll", CharSet = CharSet.Auto, SetLastError = true)]<br /> public extern static bool DuplicateToken(IntPtr ExistingTokenHandle,<br /> int SECURITY_IMPERSONATION_LEVEL, ref IntPtr DuplicateTokenHandle);<br /><br /> private const int LOGON32_PROVIDER_DEFAULT = 0;<br /> private const int LOGON32_LOGON_INTERACTIVE = 2;<br /><br /> private string m_Domain;<br /> private string m_Password;<br /> private string m_Username;<br /> private IntPtr m_Token;<br /><br /> private WindowsImpersonationContext m_Context = null;<br /><br /> [PermissionSetAttribute(SecurityAction.Demand, Name = "FullTrust")]<br /> public void Enter()<br /> {<br /> if(this.IsInContext) return;<br /> m_Token = new IntPtr(0);<br /> try<br /> {<br /> m_Token = IntPtr.Zero;<br /> bool logonSuccessfull = LogonUser(<br /> m_Username,<br /> m_Domain,<br /> m_Password,<br /> LOGON32_LOGON_INTERACTIVE,<br /> LOGON32_PROVIDER_DEFAULT,<br /> ref m_Token);<br /> if (logonSuccessfull == false)<br /> {<br /> int error = Marshal.GetLastWin32Error();<br /> throw new Win32Exception(error);<br /> }<br /> WindowsIdentity identity = new WindowsIdentity(m_Token);<br /> m_Context = identity.Impersonate();<br /> }<br /> catch (Exception exception)<br /> {<br /> // Catch exceptions here<br /> }<br /> }<br /><br /> public void Leave()<br /> {<br /> if (this.IsInContext == false) return;<br /> m_Context.Undo();<br /><br /> if (m_Token != IntPtr.Zero) CloseHandle(m_Token);<br /> m_Context = null;<br /> }<br />}</span><br /></span>Michiel van Otegemhttp://www.blogger.com/profile/08071564548306767306noreply@blogger.com2tag:blogger.com,1999:blog-13109089.post-1136903716898516652006-01-10T15:32:00.000+01:002006-01-10T15:35:16.913+01:00Voor de serieuze Star Wars gek<a href="http://www.thinkgeek.com/geektoys/warfare/69de/">http://www.thinkgeek.com/geektoys/warfare/69de/</a><br />Vooralsnog ben ik nog niet gevallen voor de "Dark Side", maar cool zijn ze wel.Michiel van Otegemhttp://www.blogger.com/profile/08071564548306767306noreply@blogger.com0tag:blogger.com,1999:blog-13109089.post-1132695422703611492005-11-22T22:33:00.000+01:002005-11-22T22:37:02.703+01:00ASP is niet dood, het ruikt alleen een beetje vreemdWie denkt dat ASP helemaal dood is heeft het mis. Hoewel Microsoft natuurlijk adviseert om ASP.NET (2.0) te gebruiken wordt ASP nog steeds ondersteund, en gezien Windows Vista en Windows "Longhorn" Server nog steeds ASP zullen bevatten, is de support voor ASP nog zeker een jaar of 10 gewaarborgd.<br /><br />Van het blog van Scott Hanselman: <a href="http://www.hanselman.com/blog/PermaLink.aspx?guid=7ed29b39-acaa-4802-9d3d-a3aefd1a186b">http://www.hanselman.com/blog/PermaLink.aspx?guid=7ed29b39-acaa-4802-9d3d-a3aefd1a186b</a>Michiel van Otegemhttp://www.blogger.com/profile/08071564548306767306noreply@blogger.com0