Оказывается, большая часть моей проблемы из-за различий между IIS6, IIS7 и сервером разработки:
http://www.asp.net/hosting/tutorials/core-differences-between-iis-and-the-asp-net-development-server-cs
В IIS 6 ASP.NET работает только для расширений, настроенных в разделе Свойства сайта> Виртуальный каталог> Конфигурация> Сопоставления> Расширения приложений. Например, .aspx указывает на aspnet_isapi.dll. Статический контент не будет проходить через ASP.NET по умолчанию.
В IIS 7 он аналогичен (в разделе «Сопоставления обработчиков»), однако благодаря новому интегрированному конвейеру в web.config вы также можете иметь проверку статического содержимого для аутентификации. См. Performing Forms-Based Authentication and URL Authentication on Static Files with IIS 7
в приведенном выше URL.
Также на основе вышеуказанного URL-адреса в ASP.NET Development Server (на основе Cassini):
Каждый запрос, поступающий в
ASP.NET Development Server, будь то
для страницы ASP.NET, изображения или
Файл JavaScript, обрабатывается
ASP.NET runtime.