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
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.