У меня есть веб-приложение ASP.NET, в котором объект Microsoft Media Player на странице (в IE) отправляет запрос на веб-страницу .aspx. На странице я использую TransmitFile
, чтобы отправить обратно аудиофайл. Это прекрасно работает большую часть времени.
Но в некоторых случаях (комбинация версии IE и конкретного клиента, по крайней мере из того, что я вижу) выдается второй запрос с точно таким же URL-адресом. Единственное различие, которое я вижу между первым и вторым запросом, заключается в значении агента пользователя. Первый запрос будет иметь User-Agent: Windows-Media-Player/9.00.00.4508
, а второй будет User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
Этот второй запрос вызывает повторную отправку аудиофайла по сети, что является расточительным. Это то, чего я пытаюсь избежать.
У меня был связанный вопрос здесь , но в этом случае нет запроса Range. Это опять тот же самый точный запрос (те же заголовки, за исключением агента пользователя).
Я пытался подавить второй ответ (на основе user-agent в заголовке) со всеми видами ответов о статусе HTTP (304, 404, 500 и т. Д.). Это работает для некоторых клиентов, иногда, но иногда прерывается (Media Player просто не будет воспроизводить звук, даже если Fiddler покажет, что он был передан по первому запросу).
Я бы хотел "убедить" браузер, чтобы он не повторял второй запрос, если это возможно. В качестве второго варианта я хотел бы найти ответ на второй запрос, который не будет прерывать воспроизведение, но позволит избежать отправки всего аудиобуфера.