2016-12-08 14 views
0

У меня есть проблема с этим .aspx C# код:беда служит .mp3 файлы из .aspx в IE браузеров с помощью < audio>

protected void Page_Load(object sender, EventArgs e) 
{ 
    string url = Request["url"]; 
    string type = Request["ext"]; 

    if (!string.IsNullOrEmpty(url)) 
    { 
     url = HttpUtility.UrlDecode(url); 

     WebClient client = new WebClient(); 
     byte[] file = client.DownloadData(url); 

     if (file != null && file.Length > 0) 
     { 
      Response.Clear(); 
      Response.Buffer = true; 
      Response.ContentType = "audio/mpeg"; 
      Response.AddHeader("Content-Disposition", "inline"); 
      Response.BinaryWrite(file); 
      Response.End(); 
     } 
    } 
} 

Он отлично работает во всех браузерах, кроме IE. В IE проигрыватель звуковых тегов < показывает загадочное сообщение «Недопустимый источник». Нет ошибок консоли или предупреждений. Я предполагаю, что у меня есть тонкая ошибка в настройках Response. Ниже приведена звуковая разметка <, но, как я уже сказал, она работает в каждом браузере, кроме IE. Я ушел с пути, чтобы попытаться заставить его работать над IE - еще раз, самым сложным браузером, с которым можно работать. После всех этих лет, это выходит за рамки душевнобольных. Какого черта люди делают в Microsoft?

<audio controls="true" preload="none"> 
    <source src="http://localhost:8056/web/Recordings/RE4cdf6a142506328787e9c88cbf7c4885.mp3" type="audio/mpeg"></source> 
Your browser does not support HTML5 audio. Please consider upgrading your browser to the latest version. 
</audio> 
+0

проверить ответы здесь, чтобы увидеть, если это поможет http://stackoverflow.com/questions/27817266/how-to-correctly-use-urlencode-and-decode в противном случае сделайте поиск Google на ' HttpUtility.UrlDecode', чтобы убедиться, что вы, возможно, что-то сделали неправильно – MethodMan

+0

Спасибо, но если декодирование/кодирование было плохим, не повлияло бы это на все браузеры, а не только на IE? Я думаю, что ошибка, как я уже упоминал, является параметром Response. Например, может быть, я пропустил заголовок или неправильно использовал заголовок? – Ringo

+0

Возможно, у вас есть специальные символы, которые интерпретируются по-разному в IE – MethodMan

ответ

1

Какая версия IE вы используете ?. HTML5 совместим с IE 9+. Вам потребуется HTML5shiv для обеспечения совместимости для IE браузеров старше IE 9.

При использовании IE 9 вы должны использовать что-то вроде этого:

<!-- Display the audio player with control buttons. --> 
<audio src="http://localhost:8056/web/Recordings/RE4cdf6a142506328787e9c88cbf7c4885.mp3" controls autoplay loop> 
    HTML5 audio not supported 
</audio> 

Примечание: Если вы разрабатываете в интрасети и имеют проблемы с обработкой для HTML5, вы можете добавить к блоку веб-страницы, чтобы заставить Internet Explorer использовать новейшие стандарты. Если вы предпочитаете, настройте сервер веб-разработки для отправки мета-http-equiv-заголовка «X-UA-Compatible» с IE = edge.

Reference

+0

Спасибо за эту информацию, но я использую последний IE 11 с Dev Tools, который говорит, что версия «Edge», которая Я предполагаю, что 11. Я тоже пробовал метатег. Я действительно думаю, что проблема должна быть параметром Response, потому что я не могу найти примеры того, как служить .mp3/.mp4 с помощью C#, чтобы установить значения Response. Например, я не знаю, следует ли использовать Response.BinaryWrite() или Response.WriteFile(). – Ringo

+0

Я предполагаю, что если проблема в ответе, она не будет работать в любом браузере, потому что данные не будут отправляться корректно со стороны сервера. Вы упомянули, что он работает хорошо со всеми браузерами, но IE, тогда вам нужно проверить клиентскую сторону специально для IE. – Pablo

+0

Я думаю, что есть небольшая комната с хорошими браузерами, потому что они будут смотреть на заголовки и принимать определенные решения, которые разумны. Например, хотя я изначально предлагал Content-Disposition «attachment», который обычно открывал диалог «Сохранить как ...», тег