Одним из решений было бы создание настраиваемого HttpModule, который выполняет всю работу за вас, однако он требует наличия DNS, поддерживающего подстановочные знаки (*). Если ваш DNS не поддерживает это, вы можете заняться управлением собственным DNS.
Тем не менее, вот хороший пост о создании модуля HttpModule, который анализирует передаваемый "поддомен" и перенаправляет трафик в соответствующее место. Он использует механизм поиска [для поиска контента по ключевым словам, совпадающим с поддоменом], но его можно изменить в соответствии с вашими потребностями.
http://codebetter.com/blogs/brendan.tompkins/archive/2006/06/27/146875.aspx
[EDIT]
Другим решением было бы найти поставщика DNS, который предлагает программируемую службу DNS, возможно, через веб-службу. Затем вы должны программно добавить поддомен к этому DNS, когда это необходимо из вашего приложения. Это упрощенное объяснение, которое не учитывает потребности вашего бизнеса. Лично я предпочитаю параметр HttpModule для добавления поддоменов в приложении, так как он требует меньше модификаций задействованных серверов.