Я пишу приложение, которое загружает большие файлы в фоновом режиме. Все клиенты входят в систему локально или через VPN. Когда они входят в систему локально, я не хочу ограничивать загрузку. Однако я хотел бы ограничить загрузку до 10 КБ/с, когда пользователь подключен через VPN. Я могу различать этих пользователей по диапазону IP-адресов.
Поскольку это AIR-приложение, я решил, что буду дросселировать на стороне сервера, поскольку я могу сделать это либо с самого сервера (IIS 6), либо с веб-службы (asp.net / C#).
Дросселирование через IIS 6 вроде бы работает нормально, но кажется, что это нужно делать на всем сайте. Есть ли способ сделать это через IP? Или я должен буду сделать это в .NET?
Моя первая мысль такова. Я не знаю, будет ли это работать, но это займет всего несколько минут, чтобы попробовать.
Создайте два веб-сайта IIS на одном сервере. Первый сайт привязан к публичному IP, а второй - к частному IP. Оба сайта указывают на одну и ту же папку в файловой системе.
Ваши VPN пользователи будут получать доступ через частный IP, поэтому вы можете установить правило "для всего сайта" на этом сайте, которое будет действовать только на VPN пользователей. Это должно работать практически для любых настроек IIS6, включая дросселирование пропускной способности.
Стоит попробовать, по крайней мере.
-- Edit: Попробовал это и это работает безупречно.