Hi Roger,
I tested your page and it works fine on my side:
http://www.galleryserverpro.com/dev/webapp2/video2.aspx
Have you solved this issue? After the site has been published can you watch
the video when using Windows Media Player to access the ashx? If it cannot
work for Windows Media Player either I think probably it's not an
Silverlight issue. We can then move on to diagnose the IIS and the
HttpHandler.
Regards,
Allen Chen
Microsoft Online Support
Delighting our customers is our #1 priority. We welcome your comments and
suggestions about how we can improve the support we provide to you. Please
feel free to let my manager know what you think of the level of service
provided. You can send feedback directly to my manager at:
.
==================================================
Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/en-us/subs...#notifications.
Note: MSDN Managed Newsgroup support offering is for non-urgent issues
where an initial response from the community or a Microsoft Support
Engineer within 2 business day is acceptable. Please note that each follow
up response may take approximately 2 business days as the support
professional working with you may need further investigation to reach the
most efficient resolution. The offering is not appropriate for situations
that require urgent, real-time or phone-based interactions. Issues of this
nature are best handled working with a dedicated Microsoft Support Engineer
by contacting Microsoft Customer Support Services (CSS) at
http://msdn.microsoft.com/en-us/subs.../aa948874.aspx
==================================================
This posting is provided "AS IS" with no warranties, and confers no rights.
--------------------
| Thread-Topic: Silverlight video doesn't work when file is streamed from
handler
| thread-index: AclDPnB+5p6h0JhHTZ6iqWci7rNrCg==
| From: =?Utf-8?B?Um9nZXIgTWFydGlu?= <>
| Subject: Silverlight video doesn't work when file is streamed from handler
| Date: Mon, 10 Nov 2008 06:13:01 -0800
| Lines: 160
| Message-ID: <46509CCB-78F1-440F-9B68->
| MIME-Version: 1.0
| Content-Type: text/plain;
| charset="Utf-8"
| Content-Transfer-Encoding: 7bit
| X-Newsreader: Microsoft CDO for Windows 2000
| Content-Class: urn:content-classes:message
| Importance: normal
| Priority: normal
| X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.3168
| Newsgroups: microsoft.public.dotnet.framework.aspnet
| Path: TK2MSFTNGHUB02.phx.gbl
| Xref: TK2MSFTNGHUB02.phx.gbl
microsoft.public.dotnet.framework.aspnet:79560
| NNTP-Posting-Host: tk2msftibfm01.phx.gbl 10.40.244.149
| X-Tomcat-NG: microsoft.public.dotnet.framework.aspnet
|
| Note: My apologies for repeating this post from last week, but my nospam
| alias and profile account were incorrect. I think I have fixed this, so
| hopefully this post will trigger MS into a response per their MSDN policy.
| --------------------
|
| I have a web site under .NET 2.0 that renders videos using the
Silverlight
| media player.
|
| The web page looks like this:
| <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="video2.aspx.cs"
| Inherits="WebApplication2.video2" %>
|
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
| "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
| <html xmlns="http://www.w3.org/1999/xhtml">
| <head runat="server">
| <title></title>
| </head>
| <body>
| <form id="form1" runat="server">
| <asp:ScriptManager ID="ScriptManager1" runat="server">
| <Scripts>
| <asp:ScriptReference Path="~/script/SilverlightControl.js" />
| <asp:ScriptReference Path="~/script/SilverlightMedia.js" />
| </Scripts>
| </asp:ScriptManager>
| <div id="mp1p" />
|
| <script type="text/javascript">
| //<![CDATA[
| Sys.UI.Silverlight.Control.createObject('mp1p', '\u003cobject
| type="application/x-silverlight" id="MediaPlayer1"
| style="height:240px;width:320px;">\r\n\t\u003ca
| href="http://go2.microsoft.com/fwlink/?LinkID=114576&v=1.0">\u003cimg
| src="http://go2.microsoft.com/fwlink/?LinkID=108181" alt="Get Microsoft
| Silverlight" style="border-width:0;" />\u003c/a>\r\n\u003c/object>');
| Sys.Application.initialize();
| Sys.Application.add_init(function()
| {
| // This works:
| $create(Sys.UI.Silverlight.MediaPlayer, { "mediaSource":
| "video/3StrikesChipmunk_56.wmv", "scaleMode": 1, "source":
| "skins/mediaplayer/Professional.xaml" }, null, null, $get("mp1p"));
|
| // This does not work (only difference is that it gets the video from
the
| handler)
| //$create(Sys.UI.Silverlight.MediaPlayer, { "mediaSource":
| "handler/getmediaobject.ashx", "scaleMode": 1, "source":
| "skins/mediaplayer/Professional.xaml" }, null, null, $get("mp1p"));
| });
| //]]>
| </script>
| </form>
| </body>
| </html>
|
| ----------------------------------------
| This page works great when I directly reference the video file. But when
I
| try to use an HTTP handler instead, all I get is an empty Silverlight
control
| with the Play button disabled and no video. You can repro it by
commenting
| out the $create line above that references the WMV file and uncomment the
| line below it that uses the getmediaobject.ashx handler.
|
| The getmediaobject.ashx handler is straight forward:
|
| using System.IO;
| using System.Web;
| using System.Web.SessionState;
|
| namespace WebApplication2.handler
| {
| [System.Web.Services.WebService(Namespace = "http://tempuri.org/")]
| [System.Web.Services.WebServiceBinding(ConformsTo =
| System.Web.Services.WsiProfiles.BasicProfile1_1)]
| public class getmediaobject : IHttpHandler
| {
| #region IHttpHandler Members
|
| public bool IsReusable
| {
| get { return true; }
| }
|
| public void ProcessRequest(HttpContext context)
| {
| ProcessMediaObject(context,
| context.Server.MapPath("~/video/3StrikesChipmunk_56.wmv"));
| }
|
| #endregion
|
| private void ProcessMediaObject(HttpContext context, string filePath)
| {
| FileStream fileStream = null;
| try
| {
| context.Response.Clear();
| context.Response.ContentType = "video/x-ms-wmv";
| context.Response.Buffer = false;
|
| HttpCachePolicy cachePolicy = context.Response.Cache;
| cachePolicy.SetExpires(System.DateTime.Now.AddSeco nds(2592000)); //
30
| days
| cachePolicy.SetCacheability(HttpCacheability.Publi c);
| cachePolicy.SetValidUntilExpires(true);
|
| const int bufferSize = 32768;
| byte[] buffer = new byte[bufferSize];
| long byteCount;
| fileStream = File.OpenRead(filePath);
| while ((byteCount = fileStream.Read(buffer, 0, buffer.Length)) > 0)
| {
| if (context.Response.IsClientConnected)
| {
| context.Response.OutputStream.Write(buffer, 0, buffer.Length);
| context.Response.Flush();
| }
| else
| {
| return;
| }
| }
| }
| finally
| {
| if (fileStream != null)
| fileStream.Close();
|
| context.Response.End();
| }
| }
| }
| }
|
| The really odd part is that the handler *does* work on my local network -
it
| only
| fails when I publish the code to a web server and then access the page
| across the internet. It happens on both IIS 6 and IIS 7, and in IE and
| Firefox.
|
| I published the above code at
|
http://www.galleryserverpro.com/dev/webapp2/video2.aspx. The page is
| currently configured to use the handler so that you can see it failing
for
| yourself.
|
| Additional info:
| 1. I am using the final release of 2.0 Silverlight, including the two
script
| files SilverlightControl.js and SilverlightMedia.js.
| 2. I have confirmed that no exception is occuring in the handler.
| 3. Using Firebug I can confirm that the handler is being called and that
it
| is returning data to the browser.
|
| All evidence points to Silverlight not being able to handle the data
| streamed from Silverlight. Perhaps there is a change I can make to the
| handler to get it to work, or maybe there is an issue within Silverlight.
| Please advise.
|
| Thanks!
| Roger Martin
|
|