这是我试图实现的场景:与Web应用程序存储在同一服务器上的声音,在客户端满足条件时播放。当我在IDE中运行它并将webconfig更改为指向DB所在的服务器时,它可以正常工作。但是,当我部署它并通过浏览器访问它时,声音无法播放。当我使用我的开发机器时播放的声音相同。代码是:
var configsetings = new System.Configuration.AppSettingsReader();
string soundPath= configsetings.GetValue("Notification",typeof(System.String)).ToString();
var sound = new System.Media.SoundPlayer { SoundLocation = Server.MapPath(soundPath) };
sound.Load();
sound.Play();
网络配置是:
<add key="Notification" value="~/beep-4.wav" />
声音文件位于ASP.NET Web应用程序的根文件夹中。那可能是什么错?服务器上没有音频输出设备也没有像媒体播放器这样的播放器,但这些因素并没有阻止它在我的开发机器上工作。
答案 0 :(得分:2)
查看您发布的代码,我假设您是用C#编写的。
因此,此代码将在服务器端运行,而客户端(Web浏览器)将永远不会知道它或您的音频文件。请阅读asp.net代码隐藏及其工作原理。如果您想在浏览器(客户端)播放音频文件,则需要使用javascript或flash,或< audio > tag from html5。
通过在服务器上安装声卡,您只能实现(在最佳情况下)获取在该服务器上播放的文件。
答案 1 :(得分:1)
谢谢你,这个标签很有用。我把一个例程在运行时将标记的HTML写入div并将其放入计时器中。
sounddiv.InnerHtml = "<audio preload=\"auto\" autoplay=\"autoplay\">" +
"<source src=\"" + soundPath + "\" type=\"audio/wav\" />" +
" Your browser does not support the audio tag. </audio>";
响应条件,在定时器后面的代码中调用此代码。 所以声音每30秒重复一次。问题解决了。谢谢各位领导。