如何从C#传递cookie到AxShockwaveFlash?

时间:2009-12-12 06:50:45

标签: c# .net wpf flash activex

我正在使用WPF和AxShockwaveFlash开发视频播放器。

它有以下步骤:

  1. 从网络服务中查找视频。
  2. 它获取每个视频的信息。
  3. 将视频信息传递给AxShockwaveFlash和嵌入式Flash视频播放器。
  4. 嵌入式Flash视频播放器开始从网络服务下载流媒体。
  5. 我在第4步遇到问题。
    步骤1-3共享一个cookie(CookieContainer),但步骤4不能 如何将其cookie传递给嵌入式Flash视频播放器?

2 个答案:

答案 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;

希望有所帮助