Проблемы с URI источника Silverlight 4 MediaElement

У меня возникают проблемы с настройкой свойства Silverlight 4 MediaElement Source в моем приложении ASP.NET MVC 2. У меня есть машина для разработки Windows 7 и промежуточный сервер Windows Server 2008.

Локально я использовал источник MediaElement, например:

<MediaElement x:Name="VideoMediaElement" Source="Assets/126.mp4">
...
</MediaElement>

Этот источник работает на моей машине разработки и на моем промежуточном сервере, но я обнаружил, что это работает только в Google Chrome. После долгих исследований и тестирования я преобразовал свое приложение, чтобы установить источник:

<MediaElement x:Name="VideoMediaElement" Source="http://localhost:40000/ClientBin/Assets/126.mp4">
...
</MediaElement>

Использование этого типа URI позволяет воспроизводить мое видео на моем локальном сервере в Internet Explorer, а также в Google Chrome. Когда я отправляю это на свой промежуточный сервер, путь вычисляется следующим образом:

<MediaElement x:Name="VideoMediaElement" Source="http://myDomain/MyVirtualDir/ClientBin/Assets/126.mp4">
...
</MediaElement>

На мой взгляд, это нормально, но видео не будет воспроизводиться ни в одном браузере на промежуточном сервере.

Я вижу различия между моей средой разработки и промежуточным сервером в виртуальном каталоге. Существуют ли известные проблемы или уловки при установке полного URI, включающего виртуальный каталог?

Каков предпочтительный метод загрузки видеофайла из файловой структуры в Silverlight 4 MediaElement?


person Steven Hook    schedule 13.07.2010    source источник


Ответы (2)


Моими первыми шагами в диагностике этого были бы:

  • прекратить использовать хром. Сделайте так, чтобы все это работало в IE, а затем протестируйте другие браузеры.
  • прекратите использовать полный URL. Учитывая, что XAP, хост-страница и ресурс находятся на одном сервере, мы знаем, что он нам не нужен, поэтому давайте не будем его использовать.
  • Не используйте браузер, работающий на промежуточном сервере, используйте другой клиентский компьютер для тестирования.
  • Установите Fiddler2 на клиентскую машину, как подсказывает информация о сервере, и посмотрите, что на самом деле запрашивается.

Вы пробовали "/assets/126.mp4" вместо "assets / 126.mp4"?

Если вы получаете 404 из URL-адреса, который выглядит хорошо, проверьте mime-карту сервера, есть ли сопоставление для .mp4?

Также проверьте безопасность доступа к файлам.

person AnthonyWJones    schedule 13.07.2010
comment
Спасибо за вашу помощь. Вы ответили на мой вопрос, нужен ли мне полный путь или нет. Итак, чтобы было ясно, мне не нужен полный путь в моем источнике, если он все находится в одном и том же ClientBin. Более того, на моем сервере отсутствовал тип MIME для .mp4 с типом видео / mpeg. Как только я добавил это, как относительные, так и абсолютные пути снова начали работать. Теперь, только если он будет транслировать его, а не загружать сначала весь файл, а затем воспроизвести его, но это будет темой для другого вопроса. - person Steven Hook; 14.07.2010
comment
@Steve: Некоторые исследования прогрессивной загрузки Silverlight могут помочь решить проблему с загрузкой. - person AnthonyWJones; 14.07.2010

Проверял ли скрипач, что вам говорит фактический HTTP-запрос / ответ? Может быть, есть информация о безопасности (междоменный доступ) или, по крайней мере, вы получите более подробную информацию о том, что происходит под крышкой ... вы можете найти скрипач прямо здесь: http://www.fiddler2.com/fiddler2/

person server info    schedule 13.07.2010
comment
Я использовал скрипач. Он показывает 404 ошибки на /MyVirtualDir/ClientBin/Assets/126.mp4, но я не уверен, что это мне многое говорит. Я знаю, что он не может его найти, поэтому уверен, что это проблема с маршрутизацией. Если я использую относительный путь, например Assets / 126.mp4, скрипт не обнаружит проблемы; но опять же, похоже, это работает только в Google Chrome. - person Steven Hook; 14.07.2010
comment
вы установили действие сборки для ресурса для видео, тогда xap большой, но вы можете получить к нему относительный доступ. - person server info; 14.07.2010