2010-03-04 48 views
7

我使用VSTS 2008 + C#+ .Net 3.5 + Silverlight 3.0 + ASP.Net在瀏覽器中開發Silverlight應用程序(視頻媒體播放器),功能很簡單,只需使用MediaElement播放遠程視頻文件。視頻文件下載問題

遠程服務器是Windows Server 2008 + IIS 7.0 + IIS Media Bit Rate Throttling Control。

由於可以發現請求媒體URL(例如來自流量嗅探器),並且我想知道如何防止直接從Url下載?即我希望最終用戶在瀏覽器中使用我的Silverlight媒體播放器應用程序播放該文件,防止它們直接下載到本地。任何簡單快捷的解決方案或參考代碼/文檔?

+0

媒體網址是如何形成的? 它是直接指向文件夾中媒體文件的URL嗎?或者您是否使用某種HTTP處理程序來處理媒體文件? – 2010-03-08 00:20:30

+0

我不知道這是否會對你有所幫助,但微軟已經開源了奧運使用的媒體框架:http://smf.codeplex.com/ – 2010-03-18 01:02:11

回答

1

我可能在這裏緊抓不住,但是如何使用HTTP處理程序來攔截對媒體URL的請求:當HTTP處理程序遇到請求時,它會檢查請求中的唯一HTTP標頭 - 這可能是硬編碼插入媒體播放器應用程序中,以便URL請求附帶適當的安全標頭 - 除非HTTP標頭存在,否則所有響應都將被阻止。我知道這裏沒有代碼細節,但這是一個想法。

1
  1. 使用ASP.NET Authentication Service驗證/授權用戶
  2. 放視頻的文件夾在web.config中防止對內容

如果我沒有記錯的未認證的訪問(並且要誠實,因爲我從來沒有嘗試過這種特殊情況,所以有機會)......這將保護您的視頻內容,同時允許授權用戶通過Silverlight訪問它。

+0

我認爲他對通過提供一個用戶名 - 密碼。他的問題很簡單。一個普通的網頁有一個silverlight應用程序。應用程序從某個xyz位置請求視頻資源。它可能是他的根目錄下的一個子文件夾。他希望用戶防止直接訪問它。由於silverlight應用程序從客戶端請求它,因此不能將其放在某個app_data或bin文件夾下。 – Manjoor 2010-03-06 13:21:56

+0

他感興趣的是授權來自Silverlight應用程序的請求。由於它只是一個客戶端,所以他可以使用具有已知用戶名和密碼的身份驗證服務登錄,以便Silverlight應用程序的所有用戶共享。這樣,如果用戶試圖通過URL直接訪問它,他將被拒絕 – 2010-03-08 14:08:55

0

喬爾上面提出的建議可能是合理的。特別是如果Silverlight託管Web應用程序運行在以特定身份(即「svcMyVideoApp」)運行的應用程序池中。然後你可以在只有這個身份可以訪問內容文件夾的地方製作它。設置所有其他請求的內容拒絕(除了也許你自己的:))

0

如果我沒有錯誤......如果設置正確,IIS 7的媒體服務甚至不應該爲原始文件提供服務應該提供一個原始未處理的「aspx」頁面。

我幾個月前才玩過這個遊戲,但是當我爲IIS 7安裝媒體插件時,它並未提供原始媒體文件,我只能通過Silverlight界面訪問它們。我使用Expression Studio創建了我的Silverlight查看器頁面,並將其編碼爲「流暢流式傳輸」。

0

一個簡單的方法是添加一個處理程序來捕獲請求,如@pb所說的。我不知道發送標題是否正確或不正確。一個簡單的方法將只檢查是否要求有推薦人..

String.IsNullOrEmpty(context.Request.ServerVariables [「HTTP_REFERER」])

或者需要驗證和發送AUTH的cookie與請求。