Я настроил веб-приложение, используя ту же конфигурацию, что и вы, и также получаю 404. Я не знаю, почему оно работает в IIS 7, но вот что мне нужно было сделать, чтобы это исправить.
Создайте класс, который реализует класс System.Web.IHttpHandler. переместите код из Application_BeginRequest в вашу реализацию IHttpHandler.ProcessRequest.
Теперь вам просто нужно зарегистрировать ваш обработчик HTTP в ASP.NET. Для этого добавьте запись в ваш Web.config в /configuration/system.web/httphandlers.
Web.config Пример:
...
<httpHandlers>
<clear />
<add verb="*" path="*" type="namespace.classname, assemblyname" />
</httpHandlers>
...
Эта запись сообщает ASP.NET, что нужно обрабатывать HTTP-запросы с любым расширением и любым HTTP-методом, выполняя код в HTTP-обработчике. Обратите внимание, что я также очищаю все ранее определенные обработчики (определенные в web.config машины).
Обратите внимание, что вам все равно потребуется сопоставление приложений, настроенное в IIS.