In my previous post I’ve described how to use Application Insights and use it within your new web application. Most of us aren’t working in a greenfield project, so new solutions have to be integrated with the old.
The project I’m working on uses log4net for logging messages, exceptions, etc. In order for us to use Application Insights, we had to search for a solution to integrate both. After having done some research on the subject we discovered this wasn’t a big problem.
The software we are working on are Windows Services and Console Applications, so we should not add the Application Insights package for web applications. For these kind of applications it’s enough to just add the core package to your project(s).

Once added, we are creating the TelemetryClient in the Main of the application.
private static void Main(string[] args)
{
var telemetryClient = new TelemetryClient { InstrumentationKey = "[InstrumentationKey]" };
/*Do our application logic*/
telemetryClient.Flush();
}
You will notice we are setting the InstrumentationKey property explicitly. That’s because we don’t use an ApplicationInsights.config file, like in the web application example and this key has to be specified in order to start logging.
This final flush will make sure all pending messages will be pushed to the Application Insights portal right away.
Read more →Some time ago the Application Insights became available as a preview in the Azure portal. Application Insights helps you monitor the state of an application, server, clients, etc. As said, it’s still in preview, but it’s rather stable and very easy to use and implement in your applications.
The documentation is still being worked on, but with all the getting started guides on the Microsoft site you can kick start your project with it in a couple of minutes.
The main reason for me to dig into Application Insights is because we still had to implement a proper logging solution for our applications which are migrating to the Azure Cloud. As it happened, Application Insights just became available at the time and because of the tight Azure integration we were really eager to check it out (not saying you can’t use it with non-Azure software of course).
If you want to start using Application Insights, the first thing you will have to do is creating a new Application Insights application. You will be asked what type of application you want to use.

It’s wise to select the proper application type over here, because a lot of settings and measuring graphs will be set for you depending on the choice made over here. For this example I’ll choose the ASP.NET web application. After having waited for a few minutes the initial (empty) dashboard will be shown.
Read more →This is something which has been available in the .NET Framework since, well, forever. I’m talking about encrypting data in the config file of your (web)application. Every time I studied for the Microsoft developer exams I was reminded on this feature and thought “Hey, I really should use this in the next project”. Up until now I’ve never used this feature though.
The project I’m currently working on has some setup which encrypts the the config file when it’s deployed. A great feature, but this means I can’t read and edit the config file anymore. Manually editing the file shouldn’t be done anyway, but reading it would be nice though.
I knew this data could be decrypted also, but not how to do it exactly. Lucky for me this is a really old feature and there are dozens of people who have written something about it. This article on MSDN helped me out the most. I also read the feature had became available in the .NET Framework 2.0, apparently this wasn’t available in version 1.1.
As with most encrypting algorithms you need some kind of seed to create a stronger (and safer) encryption. If I’m not mistaken this method used the machine key of the computer it’s encrypted on. That’s not all too bad, but this means you can’t decrypt the encrypted data on a system with a different machine key.
Read more →Vandaag was ik weer eens bezig met het ontwikkelen van een website. Nu wilde ik op deze website graag per pagina de omschrijving en keywords opgeven. Een van de redenen hiervoor is omdat de zoekmachines dit leuker vinden en je zo ook per pagina aan kunt geven wat er op te lezen valt. Om nou niet op iedere pagina dezelfde functie te hoeven implementeren en ik liever niet een BasePage wil gebruiken, aangezien ik al met een Masterpage werk, zocht ik een alternatief.
Het mooiste zou zijn om in de masterpage een functie te maken en die vanuit alle child pagina’s aan te kunnen roepen. Na even zoeken hoe ik dit kon bewerkstelligen heb ik het antwoord gevonden.
Als eerste moet je een methode in je masterpage declareren, ik heb deze public gemaakt, maar ik denk dat protected of internal ook wel zal werken. Zodra dit is gedaan kun de functie vanuit een child pagina aanroepen door de masterpage te casten naar de master-klasse.
Dit kan als volgt:
Presentation.Master.JanV ma = this.Master as Presentation.Master.JanV;
Nu kun je met de ma variabele alle methoden en attributen aanroepen die in de masterpage zijn gedefinieerd, bijvoorbeeld als volgt:
ma.SetMetaTags("Description", paginaItem.Omschrijving);
Ter verduidelijking, de methode SetMetaTags heb ik zelf gemaakt in de masterpage.
Op deze manier kun je redelijk eenvoudig basis methoden maken zonder gebruik te maken van een tussenpagina waarvan je moet overerven. In mijn geval worden nu extra meta-tags geplaatst, maar je kunt dus ook andere CSS-bestanden plaatsen of een methode in je masterpage plaatsen die (bijna) iedere childpagina gebruikt.
Read more →Bij het maken van websites is het belangrijk om op iedere pagina je keywords en description goed in te vullen. Wanneer je dit niet doet, dan kun je straffen krijgen van zoekmachines en dus een lagere ranking krijgen. Momenteel ben ik weer bezig met het maken van verschillende websites, dus wilde ik ook gelijk de meta tags per pagina kunnen invullen. Hoe dit via normale HTML gaat is mij reeds bekend, maar ik wist nog niet hoe het via de code-behind moest in C#. Na een korte zoektocht op Google is mij duidelijk hoe je meta-tags kunt aanmaken. Zelf maak ik gebruik van masterpages. Deze hebben standaard een zogenaamde ContentPlaceHolder in de head en de body van de pagina. Voor het invullen van meta-tags moet er gebruik worden gemaakt van de placeholder welke in de head staat gedefinieerd. In C# kun je gebruik maken van de HtmlMeta. Deze klasse zorgt ervoor dat een meta-tag in de juiste vorm op de pagina verschijnt. Het enige wat je hier aan hoeft mee te geven is de Name en de Content, zodra dat is gedaan kun je de klasse toevoegen aan je placeholder. In mijn geval ziet de code er ongeveer als volgt uit
Read more →Vorige week moest ik bij een klant een ASP.Net 2.0 website installeren op een server.
Deze server was door iemand anders ingericht. Zelf was ik er vanuit gegaan dat alles goed was geconfigureerd, maar niets was minder waar. Na wat stoeien in IIS voor configuraties was ik ten einde raad.
Gewone HTML bestanden werden gewoon geladen en getoond op de website, maar m’n ASP.Net applicatie werkte niet. Uiteindelijk ben ik maar gaan Googlen om een antwoord te vinden. Via deze link: https://maniish.wordpress.com/2006/12/22/windows-2003-aspnet-page-gives-404-file-not-found-error-2/
Ben ik erachter gekomen dat je standaard geen dynamische pagina’s kunt weergeven op een Windows 2003 (R2) server. Dit moet je speciaal gaan activeren Wat je moet doen is het volgende.
Start IIS Klap de treeview uit en klik op Web Server Extension Nu worden enkele standaard extensies getoond op de rechterkant van het venster Als jouw extensie er bij staat moet je deze nog gaan activeren/toestaan Zodra dat is gedaan kun je werken met je dynamische content. In mijn geval stond er natuurlijk geen ASP.Net 2.0 bij in het lijstje. Deze moest ik zelf dus nog toevoegen.
Aangezien ik wel een beetje ervaring heb met slecht geconfigureerde spullen wist ik wel ongeveer wat ik zocht. Je moet zelf een extensie toevoegen. De nieuwe extensie is te vinden in de map C:\Windows\Microsoft.NET\Framework\v2.0.50727 en dan moet je het bestand aspnet_isapi.dll selecteren.
Read more →Inmiddels ben ik aanbelandt bij het designen van m’n nieuwe weblog. Nu wilde ik voor sommige onderdelen ronde hoekjes gebruiken, omdat dat helemaal hip is tegenwoordig.
Nu biedt het AJAX framework hier een mooie extender voor die je bij ASP.Net panels kunt gebruiken.
Gisteren wilde ik die dus gebruiken, nou vergeet het maar. Die dingen komen niet op mijn website(s).
Het implementeren van die rounded corner extenders is niet enorm lastig. Ongeveer 5 regels code. Het probleem zit hem in het kleuren van de lijnen. Iemand heeft het lumineuze idee gehad dat de ronde hoekjes worden opgebouwd uit tientallen div-blokjes van een hoogte van 1 pixel en waarvan alleen de borders (hoekjes} een kleur hebben. Deze kleur moet je in de code van je webpagina opgeven. Nou heb ik daar op zich niets op tegen. Het probleem is echter dat deze tientallen div’jes geen ID hebben en geen CSS klasse.
Niet echt W3C dus en al helemaal lastig om ze een andere kleur te geven dan je in de code opgeeft.
Je wilt natuurlijk niet dat bij iedere design update, je ook je code moet updaten. Daar is CSS voor uitgevonden.
Ja, ik kan er wel work-arounds voor gaan verzinnen, maar daar heb ik geen zin in. Het blijft een bagger oplossing, hoe je het ook wend of keert.
Read more →Vandaag had ik een raar probleem in m’n web-applicatie.
Ik had een zoekvenster gemaakt en hier stond maar 1 tekstbox en 1 zoekknop op. Wanneer ik in de tekstbox een zoekstring plaatste en dan op de knop ‘Zoek’ drukte werden m’n resultaten gevonden.
Wanneer ik echter op de [Enter]-knop op het toetsenbord drukte werd de pagina wel herladen, maar werd het knop-event niet geactiveerd.
Op zich kon ik dit wel verklaren doordat er geen default knop in het form was gedefinieerd. Het rare was echter dat wanneer ik 2 of meer textboxen in het zoekvenster had, dat het zoeken met de [Enter]-knop wel lukte. Nadat ik hier voldoende tijd aan had besteed vond ik het wel welletjes geweest, aangezien ik het probleem niet kon vinden.
Tijdens m’n zoektocht kwam ik wel de volgende pagina tegen: https://www.beansoftware.com/ASP.NET-Tutorials/Accept-Enter-Key.aspx
Het blijkt dat je vanaf ASP.Net 2.0 je een DefaultButton kunt opgeven aan een Panel. Je geeft het ID van de zoek-knop op en dan werkt het.
Zo heb ik nu dus ook m’n zoekvenster gemaakt, door alle textboxen in een panel te plaatsen met een defaultbutton die refereert naar m’n zoekknop.
Read more →Nadat ik nu enkele malen heb gewerkt met VS.Net 2008 ben ik er uit dat het pakket ReSharper nu echt een must is om te installeren.
Voorheen moest ik er niet zoveel van hebben, aangezien ik de voordelen er niet zo van in zag.
Nu ik de IntelliSense niet goed werkend kon krijgen in VS.Net 2008 heb ik besloten om toch maar ReSharper weer eens te installeren.
Programmeren is nu weer een stuk eenvoudiger geworden. Ik wil namelijk dat wanneer je een (-teken intikt, dat je dan ziet welke parameters je aan de functie moet meegeven. Ook wanneer je een .-teken intikt, wil ik zien welke functies, attributen of events kunnen worden gebruikt.
Met ReSharper is dit allemaal weer mogelijk gemaakt. Het kan waarschijnlijk ook wel zonder, maar na het aan- en uitvinken van allerei opties in VS.Net 2008 was ik daar wel klaar mee.
Dus, wanneer je VS.Net 2008 koopt, zorg dan wel dat je nog een paar euro’s in je budget overhoud voor de aanschaf van ReSharper.
Read more →Tijdens het werken aan een van onze nieuwste producten op het werk, kwam ik achter een leuke feature.
Wanneer je in een ASP.Net 2.0 website een bestand met de naam app_offline.htm plaatst, dan wordt al het verkeer naar die ene pagina geleid.
Dit is uitermate handig wanneer je bijvoorbeeld je website update of iets dergelijks.
Ook zorgt het framework er volgens mij voor dat alle openstaande variabelen (garbage) wordt opgeruimd, alle SQL-connecties worden gesloten, etc.
Enorm handige feature dus.
Het zal ook weer eens niet zo zijn, maar Scott Guthrie had dit al eens gevonden en er een post over gemaakt. https://weblogs.asp.net/scottgu/archive/2005/10/06/426755.aspx
Nou ja, dan zit ik in ieder geval al op ongeveer hetzelfde niveau als hij 6 oktober in 2005 was…..
Read more →