如何在asp.net网页中播放声音?

单击按钮后,我想在网页中播放一些声音。 这是我的代码,但它显示错误。

SoundPlayer x = new SoundPlayer(); x.SoundLocation = "WindowsBalloon.wav"; //x.Play(); x.PlaySync(); 

错误:

请确保指定位置存在声音文件。

但该文件存在于我的项目中,我确信该地址是正确的。

您无法使用System.Media.Soundplayer类在网页上播放文件!

原因

它将在服务器端而非客户端播放声音。

如下面的链接所述
– Web主机上的C#System.Media.SoundPlayer类问题
– 自动播放声音最“兼容”的方式是什么?

  • 使用ASP.NET音频控件 。
  • 其他SO回答同样的要求。
  • 使用任何其他基于Flash或Silverlight的插件。
  • 使用html embed标签或html5音频标签。 在w3schools上可以看到例子

基于Html5的音频解决方案(仅适用于现代浏览器)

  • 标签: 标签定义外部(非HTML)内容的容器。 (它是HTML5标记,在HTML 4中无效,但适用于所有浏览器)。
  
  • 标记: 标记还可以为外部(非HTML)内容定义容器。
  
  • 标签: 元素是HTML5元素,在HTML 4中无效,但它适用于所有浏览器。
  

请注意基于html5的解决方案的问题,您必须将video转换为不同的格式。
元素未validation为HTML 4和XHTML。
元素不会validation为HTML 4和XHTML。
元素无法“后退”以显示错误。

您需要使用 html标记。

  

或者HTML5 标签

  

这就是我想你想要的:

 Server.MapPath(string path); 

返回与Web服务器上指定虚拟路径对应的物理文件路径。

参数:path:Web服务器的虚拟路径。
返回:与路径对应的物理文件路径。

 SoundPlayer s = new SoundPlayer();
s.SoundLocation = **Server.MapPath("WindowsBalloon.wav");**
s.PlaySync();

给定完整路径即c:\wavfiles\WindowsBalloon.wav

上面的’wavfiles’是用户特权文件夹。

 use x.PlayLooping() 

function,如果你想连续播放声音文件

小心!

使用一个按钮退出循环否则声音文件将连续运行。 我建议你退出循环: –

  Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click x.Stop() End Sub 

这适用于HTML5

 protected void Button1_Click(object sender, EventArgs e) { Response.Write(""); } 

如果您需要以编程方式播放ALARM声音,可以这样做:

  

代码背后(visual basic):

 Dim cBuzz As HtmlControl = DirectCast(panBuzz.FindControl("Buzz"), HtmlControl) cBuzz.Attributes.Add("autoplay", "autoplay") 

代码背后(C#):

 HtmlControl cBuzz = (HtmlControl)panBuzz.FindControl("Buzz"); cBuzz.Attributes.Add("autoplay", "autoplay"); 

尝试将驱动器号添加到路径,例如“C:/WindowsBalloon.wav”。 但这不会在客户端播放。 我建议客户端尝试HTML5。

SoundPlayer s = new SoundPlayer();
s.SoundLocation = Server.MapPath(“WindowsBalloon.wav”);
s.PlaySync();