视频文件下载问题

时间:2010-03-04 04:47:48

标签: c# asp.net .net silverlight visual-studio-2008

我正在使用VSTS 2008 + C#+。Net 3.5 + Silverlight 3.0 + ASP.Net在浏览器中开发Silverlight应用程序(视频媒体播放器),功能很简单,只需使用MediaElement播放远程视频文件即可。

远程服务器是Windows Server 2008 + IIS 7.0 + IIS媒体比特率限制控制。

由于可以发现请求媒体网址(例如来自流量嗅探器),我想知道如何防止直接从网址下载?即我希望最终用户在浏览器中使用我的Silverlight媒体播放器应用程序来播放该文件,防止他们直接下载到本地。任何简单快捷的解决方案或参考代码/文件?

5 个答案:

答案 0 :(得分:1)

  1. 使用ASP.NET Authentication Service对您的用户进行身份验证/授权
  2. 将视频放在web.config阻止对内容进行未经身份验证的访问的文件夹中
  3. 如果我没有弄错(并且说实话,我有可能从未尝试过这种特殊情况)......这将保护您的视频内容,同时允许授权用户通过silverlight访问它。

答案 1 :(得分:1)

我可能会抓住吸管,但是如何使用HTTP处理程序拦截对媒体URL的请求:当HTTP处理程序遇到请求时,它会检查请求中的唯一HTTP标头 - 这可能会被硬编码到您的媒体播放器应用程序,以便URL请求附带相应的安全标头 - 除非HTTP标头存在,否则所有响应都被阻止。我知道这里没有代码细节,但它是一个完全相同的想法。

答案 2 :(得分:0)

乔尔上面提出的建议是有道理的。特别是如果Silverlight托管Web应用程序在以特定标识(即“svcMyVideoApp”)运行的应用程序池中运行。然后你可以使它只有这个身份可以访问内容文件夹。将所有其他内容请求设置为拒绝(除了可能是您自己的:))

答案 3 :(得分:0)

如果我没有弄错......如果设置得当,IIS 7的媒体服务甚至不应该提供原始文件,那么它应该提供原始未处理的“aspx”页面。

我几个月前才玩这个,但是当我安装IIS 7的Media插件时,它没有提供原始媒体文件,我只能通过silverlight接口访问它们。我使用Expression Studio来创建我的silverlight查看器页面并对其进行编码以实现“平滑流式传输”。

答案 4 :(得分:0)

一种简单的方法是添加一个处理程序来捕获请求,如@pb所说。我不知道发送标题是否是正确的。一种简单的方法是检查请求是否有引用者..

String.IsNullOrEmpty(context.Request.ServerVariables [ “HTTP_REFERER”])

或者您需要身份验证并发送带有请求的身份验证Cookie。