【发布时间】:2010-12-15 05:03:09
【问题描述】:
我很难解决这个问题。我有一个 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 媒体播放器中播放就好了,如果我使用单独的测试 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 事件。
我不知所措!
【问题讨论】:
-
你检查 this.Host 和 path 是否有效?
标签: asp.net silverlight asp.net-mvc-2 silverlight-4.0