我正在使用VSTS 2008 + C#+。Net 3.5 + Silverlight 3.0 + ASP.Net在浏览器中开发Silverlight应用程序(视频媒体播放器),功能很简单,只需使用MediaElement播放远程视频文件即可。
远程服务器是Windows Server 2008 + IIS 7.0 + IIS媒体比特率限制控制。
由于可以发现请求媒体网址(例如来自流量嗅探器),我想知道如何防止直接从网址下载?即我希望最终用户在浏览器中使用我的Silverlight媒体播放器应用程序来播放该文件,防止他们直接下载到本地。任何简单快捷的解决方案或参考代码/文件?
答案 0 :(得分:1)
如果我没有弄错(并且说实话,我有可能从未尝试过这种特殊情况)......这将保护您的视频内容,同时允许授权用户通过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。