Saturday, September 30, 2006

Access to the path "C:\WINNT\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files..." is denied.

Well, this weekend i spent several hours (lots) setting up our new bug tracking software (Axosoft if you wanted to ask) and out of nowhere we start getting the message :

Access to the path "C:\WINNT\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files\bugtrack\5607edd7\fc4d1071\hash.web" is denied.

everytime we try to access their web version of the product. I tried everything i could, and I asked my dear friend google many times. My problem was that lots of people described the problem, but their solutions didnt work for me.

Finally, this mighty article from the msdn saved the day. Interesting to know is that the problem came up as a combination of us installing, IIS 6.0 and then promoting the computer to be an additional domain controller. That series of events cause ASP to lost control over their temporary directories.

Who figures eh?

Friday, September 29, 2006

How to determine what version of .Net you have installed.

Well, I ran into this situation. After a quick search i found this simple but effective article in the MSDN network.

That only reminds me of the importance to keep a proper versioning system, on days when using years to determine the version of your program (at least for marketing purposes) is the way to go, we cant forget the importance to keep the traditional x.x.x.x version system going and BUILT into each of the files of your system.

Wednesday, September 27, 2006

Monday, September 11, 2006

Turbo Delphi en Latino America.

This one goes in spanish!


Para aquellos hispanoparlantes en Latino America que quieran comprar sus versiones de Turbo Delphi o tengan preguntas de como obtener soporte de Borland en sus paises, adjunto los comentarios de dos empleados de Borland al respecto de este tema:


My name is Lisa Flores ( and I work in the
Developer Tools Group for Latin America and wanted to let all of our
Latin America and Caribbean customers know that you can indeed purchase
Turbo locally in many countries and in others, directly from the Latin
America/Caribbean sales department. This page will give you your local
purchasing options:


Spanish-speaking Latin America:



Lisa Flores
Account Manager - Latin America & Caribbean
Borland Software Corporation

Friday, September 01, 2006

A success story of ISAPI, Datasnap and D2006.

A while ago I was hired to extend and complete a very complex ISAPI Delphi web application.

This application was intended to manage high volumes of web requests and responses, with peaks of 55,000 logins per day and around 35,000 transactions per day.

The system is power up by a nice 3-tier architecture using all the DataSnap gadgets available, including a nice implementation of the out-of-thebox load balance and redundancy components included on DataSnap.

Years and several jobs later, a big problem started to show up on moments of high load/volume, a terrible "No more available connections" message start affecting the webservers, the worst part was that the asp wrappers of the ISAPI were fine, so everything pointed to a problem with the dll.

I was contacted to work on this problem, so that is how my adventure started.

Initially the solution was to increased the amount of instances of the DLL that could be loaded in memory. I also tried increasing the IIS back log settings for pending http requests, all this helped but the problem persisted.

The next solution was to increase the number of webservers, this off course helped, brute force did its magic but the volume of requests increased and after some months and the problem showed up again.

After some research, I decided to go the dramatic way, so I ended up upgrading the application to the all mighty Delphi 2006 and its new FastMM memory manager, a new Midas, and the addition of the ISAPI Thread Pool unit.

In order to test if the solution was effective enough without putting at risk the live production system, I setup a nice test environment using the well known opensta testing framework.

The test consisted of 30 virtual users, each user accessing 20 different player accounts, browsing the website, checking their balances and logging out of each account. I ran twice each test against the old and the improved dll.

The results were very good, the response time per request when from an average of a 100ms per request to 25ms per request. (THAT DRAMATIC!)

On the dark side, I got only 6, "500 errors" on the test runs. So on one side I was happy because performance just jumped up, and in the other side I was concerned because I wasn't sure if I was properly addressing the main reason of all this mess.

So I decided to ramp up the test by going up to 100 virtual users and push to the extreme those 60 maximum active modules. The result, simply impressive...

The test ended up doing 12830 http requests to the dll, in the old DLL out of those 12830, 1850 were "500 errors". What "500 error"?, well the famous "not enough available connections". BINGO!

I switched dlls and tried again... GOSH, DELPHI ROX. Out of 12830, only 10 "500 errors". The dll was able to answer most of the requests properly and still in a good time.

Do I have to say more? I can't hide the fact that some nice architectural changes helped a bit, but, FastMM, ISAPI thread pooling and DataSnap, are the perfect combination for web dlls.

Delphi Small Team Pack!

Hey guys,

The DTG is going all the way, in a couple of days will put their products available for download (including the free Delphi version) and right now you can buy the Delphi Small Team pack, 2 licences with a 20% discount in the Pro, Enterprise, and Architect editions.

Great opportunity for those small high productivity factories out there. :)

Check it out here