Мне тяжело разобраться с этой проблемой.У меня есть приложение Silverlight 4, которое загружает аудио и видео файлы с URL-адресов.URL-адреса относятся к тому же домену, на котором размещено приложение, и отлично работают с видео.
URL-адреса на самом деле являются контроллерами asp.net mvc, которые отвечают за чтение файла из общего расположения на сервере и на сервере.обслуживая файловый поток.URL-адреса выглядят примерно так:
http://localhost:31479/CourseMedia?path=\omnisandbox1\ILMSShare2\Demo-Fire+Behavior\media\Disclaim.wma&encrypted=False&id=00000000-0000-0000-0000-000000000000
Если я помещу URL-адрес прямо в браузер, файл будет загружаться и воспроизводиться в Windows Media Player просто отлично, и если я использую отдельный тестПроект Silverlight для загрузки URL-адреса также работает, но я не могу заставить его работать должным образом в моем основном проекте.
Это процедура, которую я использую для фактической настройки источника:
protected void SetPlayerURL(MediaElement player, string url)
{
if (player != null && url.Length > 0)
{
player.ClearValue(MediaElement.SourceProperty);
player.Source = new Uri(this.Packet.GetMediaUrl(url, false, Guid.Empty));
}
}
и функция GetMediaURL просто создает формат URL, показанный выше:
public string GetMediaUrl(
string path,
bool encrypted,
Guid key)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat("http://{0}/CourseMedia?path={1}&encrypted={2}&id={3}",
this.Host,
System.Windows.Browser.HttpUtility.UrlEncode(path),
encrypted,
key);
return builder.ToString();
}
Запрос к контроллеру никогда не выполняется для носителя, когда он является аудио.Мне кажется странным, что этот точный код отлично работает для видео.Состояние MediaElement никогда не покидает «Закрыто», а события CurrentStateChanged ,, MediaOpened и MediaFailed никогда не инициируются.
Я в растерянности!