2016-12-08 61 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上运行 - 再一次,这是迄今为止最困难的浏览器。经过这么多年,这已经超出了令人心碎的地步。人们在微软做什么?

<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否则做'谷歌搜索HttpUtility.UrlDecode'来看看你是否正在做错事 – MethodMan

+0

谢谢,但如果解码/编码不好,是不是会影响所有的浏览器,不只是IE?我想这个错误就像我提到的那样是一个响应设置。喜欢,也许我错过了一个标题或错误地使用一个标题? – 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> 

注:如果您在Intranet上开发并且存在HTML5渲染问题,您可以添加到网页的块中以强制Internet Explorer使用最新标准。如果您愿意,可以将Web开发服务器配置为使用IE = edge发送meta http-equiv-“X-UA兼容”标头。

Reference

+0

感谢这个信息,但是我使用最新的IE 11和开发工具,说版本是“边缘”,这是我假设是11.我也尝试过meta标签。我真的认为问题必须是响应设置,因为我找不到任何如何使用c#为.mp3/.mp4提供响应值的示例。例如,我不知道是否应该使用Response.BinaryWrite()或Response.WriteFile()。 – Ringo

+0

我的猜测是,如果问题出现在响应中,它将无法在任何浏览器中运行,因为数据不能从服务器端正确发送。你提到它适用于所有浏览器,但IE浏览器,所以需要检查客户端专门为IE浏览器。 – Pablo

+0

我觉得有一些好的浏览器的摆动房间,因为他们会看标题,并做出明智的决定。例如,尽管我最初提供的是“附件”的内容处置 - 通常会打开“另存为...”对话框,