2012-03-27 1 views
2

Это сценарий, который я пытаюсь достичь: звук, хранящийся на том же сервере, что и веб-приложение, играет, когда условие выполняется на клиенте , Он отлично работает, когда я запускаю его в среде IDE и изменяю webconfig, чтобы указать сервер, на котором находится БД. Однако, когда я развертываю его и получаю доступ к нему через браузер, звук не воспроизводится. Тот же звук, который играл, когда я использовал свою машину разработки. Кодекс:. Звуковой файл .wav, хранящийся на сервере, НЕ воспроизводится при загрузке в веб-приложении

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. Так что может быть неправильно? На сервере нет устройства вывода аудиосигнала, и нет такого игрока, как медиаплеер, но эти факторы НЕ остановили его от работы на моей машине dev.

+0

Я не правильно прочитал ваш вопрос в первый раз. Если на проигрывателе нет устройства вывода звука, как вы ожидаете, что файл будет воспроизводиться? Надеюсь, вы не ожидаете услышать это на клиенте ... – yms

+0

Я действительно занимаюсь, потому что это сработало, как я объяснил, когда я запускал проект VS2010 на своем компьютере против того же сервера и с тем же файлом веб-конфигурации никаких изменений. Предполагается, что сервер просто сохранит звуковой файл, который будет воспроизводиться на клиенте. Поэтому мне интересно, почему он не играет. – Charles

+0

Код, который вы написали, запускается ** на сервере **, а не на клиенте, следовательно, вы пытаетесь воспроизвести аудиофайл на сервере без наличия в нем звуковой карты. Это никогда не сработает. Удачи. – yms

ответ

2

Глядя на код, который вы отправили, я предположим, что вы написали его на C#.

Итак, этот код будет работать на стороне сервера, а клиентская сторона (веб-браузер) никогда не узнает об этом или о вашем аудиофайле. Пожалуйста, прочитайте о кодовом коде asp.net и о том, как он работает. Если вы хотите воспроизвести аудиофайл в браузере (на стороне клиента), вам нужно использовать либо javascript, либо flash, либо < audio > tag from html5.

Установив звуковую карту на сервер, вы сможете достичь (в лучшем случае), чтобы получить файл, воспроизводимый на этом сервере.

+0

Спасибо @yms только что проверили и обнаружили, что тип mime .wav уже был в списке функций. Любая другая вещь, которую я мог проверить? – Charles

+0

Ничего себе, я вижу! Сценарий - это тот, в котором звук воспроизводится, если выполняется определенное условие, и это условие проверяется на стороне сервера, поскольку оно считывает данные из БД для проверки. Вот почему я положил его на сервер. Думаю, мне придется найти реализацию, которая может запускать встроенный звук в браузере клиента, который не воспроизводится, пока он не будет запущен! Спасибо за помощь, хотя я бы не прочь больше [Оливер Твист, как я :)) – Charles

+0

Вы всегда можете иметь веб-страницу aspx или веб-сервис, чтобы проверить условие, которое вам нужно проверить на сервере, и получить доступ к этой веб-странице или веб-сервису с помощью javascript (используя ajax, возможно?) или Flash. – yms

1

Спасибо yms, тег работал. Я поместил процедуру, которая записывает 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 секунд. Задача решена. Спасибо, ребята, за потенциальных клиентов.