Без с использованием MVC вы можете использовать то, что называется IHttpHandler
Это позволит вам обработать запрос к URL любым удобным вам способом.
Вы добавите код в ваш файл web.config, например:
<httpHandlers>
<add verb="*" path="/documents/*.pdf" type="Documents.LoadDocument,NameSpace"/>
</httpHandlers>
Тогда у вас будет класс Namespace.Documents.LoadDocument
Это реализует интерфейс IHttpHandler (всего два метода, и один из них просто bool, который указывает, является ли ваш объект потокобезопасным)
Здесь есть информация , которая описывает, как обслуживать динамический контент с помощью IHttpHandler.
Я верю, что это именно то, что вы ищете. Вы сможете загрузить документ из базы данных на основе фактического http-запроса.