2012-03-27 75 views
2

這是我試圖實現的場景:與Web應用程序存儲在同一服務器上的聲音,在客戶端遇到條件時播放。當我在IDE中運行它並將webconfig更改爲指向數據庫所在的服務器時,它完美地工作。但是,當我部署並通過瀏覽器訪問它時,聲音無法播放。與我使用我的開發機器時播放的聲音相同。代碼是:.wav存儲在服務器上的聲音文件在加載web應用程序時無法播放

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(); 

web配置是:

<add key="Notification" value="~/beep-4.wav" /> 

聲音文件是坐在ASP.NET Web應用程序的根文件夾。那麼有什麼可能是錯的?服務器上沒有音頻輸出設備,也沒有媒體播放器這樣的播放器,但是這些因素並沒有阻止它在我的開發機器上工作。

+0

我第一次沒有正確閱讀你的問題。如果播放器上沒有音頻輸出設備,您如何期待文件播放?我希望你不要期望在客戶端聽到它... – yms 2012-03-28 14:11:46

+0

我其實是這麼做的,因爲它的工作原理與我在我的機器上運行VS2010項目時針對同一服務器和相同的Web配置文件沒有更改一樣。服務器應該只存儲在客戶端上播放的聲音文件。所以我想知道爲什麼它不玩。 – Charles 2012-03-28 14:26:28

+0

您編寫的代碼在服務器**上運行**,而不是在客戶端上,因此,您將在服務器上播放音頻文件,而無需在其中安裝聲卡。這將無法工作。祝你好運。 – yms 2012-03-28 14:57:12

回答

2

看着你發佈的代碼,我會假設你用C#寫的。

所以,這段代碼將運行在服務器端,而客戶端(網絡瀏覽器)永遠不會知道它或你的音頻文件。請閱讀關於asp.net代碼隱藏和它的工作原理。如果您想在瀏覽器中播放音頻文件(客戶端),則需要使用javascript或flash或< audio > tag from html5

通過在服務器上安裝聲卡,您只能實現(在最佳情況下)獲取在該服務器上播放的文件。

+0

感謝@yms剛剛檢查並發現mime類型.wav已經在功能列表中。還有其他的事情我可以檢查出來嗎? – Charles 2012-03-28 08:46:57

+0

哇,我明白了!如果滿足某些條件,並且在服務器端檢查此條件,則該場景是聲音播放的場景,因爲它從數據庫讀取數據進行檢查。這就是爲什麼我把它放在服務器端。我想我必須找到一個實現,它可以觸發客戶端瀏覽器上的嵌入式聲音,該聲音只有在被觸發後纔會播放!感謝您的幫助,雖然我不介意更多[奧利弗Twist像我:)] – Charles 2012-03-28 17:32:42

+0

你可以隨時有一個aspx網頁或web服務來驗證你需要檢查的服務器的條件,並訪問此網頁或web服務與JavaScript(使用ajax也許?)或Flash。 – yms 2012-03-28 22:36:44

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秒重複一次。問題解決了。感謝球員的線索。

相關問題