1. HtmlInputFile <- есть такой класс, который инкапсулирует работу с <input type= file>.
2. максимальный размер меняется так: <httpRuntime maxRequestLength="size in kilobytes" />, по-умолчанию там как раз 4 МБ
помещать это надо в Web.config в <system.web>.
в любом случае подробно расписано в MSDN.
для очень больших файлов(сотни мегабайт), это не спасет, т.к. там уже будут проблемы на уровне wp_aspnet. есть компоненты, которые поддерживают закачку очень больших файлов, но имхо через http - это не есть good, т.к. протокол не предназначен для перекачки таких объемов