我正在使用WPF和AxShockwaveFlash开发视频播放器。
它有以下步骤:
我在第4步遇到问题。
步骤1-3共享一个cookie(CookieContainer),但步骤4不能
如何将其cookie传递给嵌入式Flash视频播放器?
答案 0 :(得分:1)
它不再使用Shockwave,你应该使用WebBrowser并导航到ashx或aspx页面,其中包含从cookiecontainer到webbrowser的cookie设置的所有cookie。
为了正确设置cookie,您必须在asp.net网站上创建一个名为“RedirectWithSession.ashx”的页面,
public class RedirectWithSession : IHttpHandler{
public void ProcessRequest(HttpContext context){
Response.Cookies.Add("ASP.NET_SessionID", Request.QueryString["SessionID"]);
Response.Redirect(Request.QueryString["RedirectUrl"]);
}
}
现在在你的WPF应用程序中,你必须找到ASP.NET_SessionID cookie并将其传递到webbrowser的url上,
http://host.com/RedirectWithSession.ashx?SessionID=[SessionID]&RedirectUrl=[Url]
您的webbrowser将首先访问处理程序,然后它将正确设置会话,然后您的视频网址将被加载,这样您的webservice上下文和webbrowser上下文的会话将被共享。
我刚刚向您展示了ASP.NET_SessionID的示例,您可以传递多个Cookie。这是最好的方法,你也可以使用自定义页面和javascript等,但我不知道它们是否能在所有安全模式下正常工作。
答案 1 :(得分:-1)
您可以将“flashvars”传递给Flash Active X对象,例如
<object type="application/x-shockwave-flash"
data="myFlashThingy.swf" width="100%" height="100%">
<param name="play" value="true" />
<param name="movie" value="myFlashThingy.swf" />
<param name="menu" value="false" />
<param name="quality" value="high" />
<param name="flashvars" value="videoURL='http://somewhere.com/video.flv'" />
然后您可以在ActionScript代码中访问这些“flashvars”。
在ActionScript2中你可以这样做:
var videoURL:String = _root.videoURL;
在ActionScript3中你可以这样做:
var flashVars:Object = (this.root.loaderInfo as LoaderInfo).parameters;
var videoURL:String = flashVars.videoURL;
希望有所帮助