Using custom error pages to redirect the page from virtual URL to actual page is a common trick to implement so called "URL rewrite" on IIS.
It works fine on IIS 5 & 6.
However, it won't work on IIS7 (e.g. Windows Server 2008), as there is a bug on IIS.
You need to install the following Hotfix from Microsoft.
The POST data is unavailable for custom error pages in IIS 7.0
http://support.microsoft.com/kb/956578
Once you install the fix, it works just fine.
At first, I thought there is a bug in my code and tried to figure out what's the possible difference on IIS6 and IIS7, but I couldn't come up with any idea why.
Then, I googled and found this KB page.
Anyway, it's good at least they confirmed the bug and provided a fix actually.