Jeroen Swart

.NET Architect

IE6 focus problem

Today I had some trouble with setting the focus on an input element within an overlay panel in IE6. To be more specific: I had to set the focus on the lastname textbox in the search-argument panel for the people-search page in Sharepoint. Calling the focus() method worked in every opther browser except, of course, IE6.

The code that was causing the problem is as simple as this:


Apparently this is an ancient IE6 bug. Luckily the problem is easily fixed by using the setTimeout function. Just wrap the offending code like so:

setTimeout(function() { document.all['lastname'].focus() }, 0);

Debugging in the GAC

When you want to debug an assembly that has been deployed to the GAC (e.g. an assembly that is part of a Sharepoint solution), the easiest way is to change one of the settings in Visual Studio (2005, 2008 or 2010):

  • Open the Visual Studio Options dialog (Tools -> Options)
  • Select Debugging in the left pane
  • In the right pane, locate the Enable Just My Code (Managed only) node
  • Uncheck all the childnodes under the Enable Just My Code (Managed only) node
  • Uncheck the Enable Just My Code (Managed only) node
  • Select OK

BlogEngine.NET tag casing

I'm not sure why, but BlogEngine.NET converts all tags to lowercase. I like my tags to appear as I entered them (like ASP.NET & LINQ), so I decided to change the way my BlogEngine.NET installation handles tags. Luckily, the only needed modification is in the code that stores the tags:

  • Open the Add_entry.aspx.cs file in the admin/Pages folder
  • Locate the btnSave_Click method
  • In this method, locate the following line:
  • In this line remove the ToLowerInvariant part, changing it into:
  • Save the changes and upload the page
  • Since the tags were stored as lowercase when you added or updated your posts and pages, you need to manually update the tags in the existing posts and pages

HttpHandler configuration

Sometimes you have a problem for which the solution is so simple and obvious, you can't believe you've overlooked it.

It happened to me a short while ago with an HttpHandler in a website that is using a presentation-service for the presentation-logic (I'll post about this service later). All the pages in the website are dynamically build, based on the results of a call to the presentation-service. The url's don't refer to existing pages and the HttpHandler is supposed to handle all incoming requests. Except, all I got was 404's. I had configured the necessary wildcard mapping, but it took me a while to find that the "Verify that file exists" option was checked. With this option checked, the HttpHandler is only called when the request matches to a physical file on disk. Which of course defeats the purpose of my HttpHandler.

Here's how to correctly configure a wildcard mapping in IIS6:

  1. Open the IIS Manager (Start -> Administrative Tools -> Internet Information Services (IIS) Manager)
  2. Find the node for the website or virtual directory you want to configure (expand the computer node and the Web Sites node if needed)
  3. Right-click the node and select Properties
  4. Select Configuration......
  5. In the Application Extensions list, select the row with extension '.ascx' and click Edit
  6. Make sure the entire content of the Executable field is selected, then right-click inside the Executable field and select Copy; this ensures that we have the correct path to the aspnet_isapi.dll
  7. Select Cancel to close the dialog without changes
  8. Select Insert...
  9. Right-click inside the Executable field and select Paste
  10. Uncheck the Verify that file exists checkbox
  11. Select OK three times to store the new wildcard application mapping and to close all the dialogs
  12. The configuration is finished, you can close the IIS Manager

New Year

So, here it is, my new year's resolution for 2009 2010. To finally write content for my blog.

I'll be writing about my experiences and the problems & solutions I encounter during my work and hobbies.

Happy new year everybody!