всем привет.
на сервере лижит куча zip-файлов обозванных 1.zip, 2.zip и т.д. Мне надо написать что-то, что
1) при попытке скачать файл с сервера у юзера в окошке Save as было другое название (берется из базы).
2) ограничивать скорость скачки в зависимости от типа юзера.
1-е решается ISAPI filter'ом по событию OnURLMap.
2-е вообще нет соображений, кроме как котролировать OnSendRawData в том-же фильтре.
Нельзя-ли это как-то написать с помощью ISAPI extension ?
помогите, да ?
Здравствуйте Аноним, Вы писали:
А>Здравствуйте Lexey, Вы писали:
L>>Здравствуйте Аноним, Вы писали:
А>>>всем привет.
А>>>на сервере лижит куча zip-файлов обозванных 1.zip, 2.zip и т.д. Мне надо написать что-то, что
А>>>1) при попытке скачать файл с сервера у юзера в окошке Save as было другое название (берется из базы).
А>>>2) ограничивать скорость скачки в зависимости от типа юзера.
А>>>1-е решается ISAPI filter'ом по событию OnURLMap.
А>>>2-е вообще нет соображений, кроме как котролировать OnSendRawData в том-же фильтре.
А>>>Нельзя-ли это как-то написать с помощью ISAPI extension ?
L>>Первое можно. Смотреть в сторону заголовков Content-Type и Content-Disposition.
L>>Второе я себе вообще слабо представляю. Разве что ты будешь специально вводить задержки при отправке данных.
А>Кажется придумал... Походу 2-й пункт надо реализовать не с помощью TransferFile'а а наверное читать файл обычным образом, и писать WriteClient'ом.
А>А вот надо-ли для этого новый поток заводить интересно ? присоветуйте чё-нить.
Посмотри мою статью про ISAPI-расширения. Там приведены рекоммендации лучших собаководов (пул ниток в ISAPI-расширении).
А>>>>2) ограничивать скорость скачки в зависимости от типа юзера.
А>>>>2-е вообще нет соображений, кроме как котролировать OnSendRawData в том-же фильтре.
А>>>>Нельзя-ли это как-то написать с помощью ISAPI extension ?
L>>>Второе я себе вообще слабо представляю. Разве что ты будешь специально вводить задержки при отправке данных.
А>>Кажется придумал... Походу 2-й пункт надо реализовать не с помощью TransferFile'а а наверное читать файл обычным образом, и писать WriteClient'ом.
А>>А вот надо-ли для этого новый поток заводить интересно ? присоветуйте чё-нить.
L>Посмотри мою статью про ISAPI-расширения. Там приведены рекоммендации лучших собаководов (пул ниток в ISAPI-расширении).
Если мы отвечаем WriteCliento-m ,то все посылается но если во время передач клиетт отменяет прием файла то в isapi
не происходит выход из WriteClient .Как это обработать.Пробовал делать это с асинхронной передачей но происходит тоже самое. Как обработать отказ клиента? Что то ведь передается, когда клиент нажимает кансель????
Здравствуйте im, Вы писали:
im>Если мы отвечаем WriteCliento-m ,то все посылается но если во время передач клиетт отменяет прием файла то в isapi
im>не происходит выход из WriteClient .Как это обработать.Пробовал делать это с асинхронной передачей но происходит тоже самое. Как обработать отказ клиента? Что то ведь передается, когда клиент нажимает кансель????
AFAIK, нет такой возможности. Если соединение рвется правильно (т.е. посылкой TCP-пакета, разрывающего соединение), то отловить такое можно (но IIS не предоставляет такого механизма, скорее всего он просто вернет ошибку на WriteClient), а вот если соединение рвется в тихую (обрыв линии), то тут уже никак не определишь его окончание — только по таймауту.