2013-02-08 67 views
1

我已經創建了C#Asp.Net的一類,它作爲一個IHttpHandler在爲了得到影片在流的形式處理一些特殊的要求,從MS檢索使用VLC Web插件時缺少Asp.Net會議SQL Server 2008數據庫。 從前端我使用VLC播放器的Web插件請求用一個嵌入標記這些視頻流類似以下內容:通過嵌入標記

<embed type="application/x-vlc-plugin" pluginspage="http://www.videolan.org" 
width="840" height="472" name="vlcPlayerExtraFeatures" 
id="vlcPlayerExtraFeatures" target="http://my-pc/MyWebApp/file.ivd?VideoID=123" 
autoplay="true" windowless="true" bgcolor="#000000" /> 
    <object classid="clsid:9BE31822-FDAD-461B-AD51-BE1D1C159921" 
    codebase="http://download.videolan.org/pub/videolan/vlc/last/win32/axvlc.cab"> 
    </object> 

的ProcessRequest(HttpContext的背景下)方法我的IHttpHandler類,非常首先我檢查爲用戶的Asp.Net會議從「背景」參數,像這樣:

if (context.Session["LoggedinUser"] == null) { 
    //do bla bla bla 
} 

的問題是:使用VLC播放器Web插件,context.Session["LoggedinUser"]總是爲null。 如果我使用Windows媒體播放器Web插件請求相同的文件,我確實得到了提及的會話信息,但沒有使用VLC。

如果某種問題與VLC媒體播放器?

回答

0

按我發現,使用VLC網頁插件,你就沒有辦法在服務器上訪問你的Asp.Net會話。 我已經做了另一個解決方法。在持有VLC嵌入標籤的頁面後面的代碼中。一旦頁面加載,VLC嵌入標籤的URL參數的值被附加在形式的旁路令牌:

<OBJECT id="vlc" width="840" height="472" 
CLASSID="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" type="application/x-oleobject"> 
<PARAM NAME="URL" VALUE="http://mysite.com/video.ivd?videoId=myvideo1234&videoToken=some_token_with_expiry_date" /> 
<PARAM NAME="SendPlayStateChangeEvents" VALUE="True" /> 
<PARAM NAME="AutoStart" VALUE="True" /> 
<PARAM NAME="ShowControls" value="True" /> 
</OBJECT> 

注:此URL中的查詢字符串的一部分在此示出的未加密但實際頁面上它作爲加密(實際上在page_load方法中完成)。

當VLC請求從我的自定義IHttp處理視頻,查詢字符串部分在處理程序和令牌的有效性解密從提供的視頻令牌的到期日進行評估。如果它仍然有效,則視頻將流式傳輸到客戶端,否則請求將被拒絕,以便客戶端可能無法無限期地使用此Url。

嗯,這是我的工作的情況下一種解決方法。可能是別人有比這更好的方法。