<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Random on Windows Media</title><subtitle type="html">After 10 years of supporting Windows Media I might have a few tips you could use.</subtitle><id>http://blogs.msdn.com/randomnumber/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/randomnumber/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/randomnumber/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2008-08-27T00:48:00Z</updated><entry><title>Causes of 408's in a Windows Media Services log</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/randomnumber/archive/2009/11/11/causes-of-408-s-in-a-windows-media-services-log.aspx" /><id>http://blogs.msdn.com/randomnumber/archive/2009/11/11/causes-of-408-s-in-a-windows-media-services-log.aspx</id><published>2009-11-11T14:42:00Z</published><updated>2009-11-11T14:42:00Z</updated><content type="html">&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;One common question I get from Windows Media Services admins who have looked through their log files is about the cause of the&amp;nbsp;408 status codes.&amp;nbsp; Before answering the question directly, I need to define what a 408 is.&amp;nbsp; Simply put, it is an abnormal disconnect.&amp;nbsp; All it means is that at some point during the stream the client disconnected and did not report its statistics back to the server.&amp;nbsp; Normally Windows Media Player posts a log message back to the server that contains information about the client’s playback experience when the playback stops (or a similar event).&amp;nbsp; If the server does not receive this log post, for whatever reason, it takes the statistics it has compiled on its own and writes out a&amp;nbsp;log entry&amp;nbsp;with the c-status code of&amp;nbsp;408 in the&amp;nbsp;log.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;As for the causes, there could be a number of them.&amp;nbsp; The client simply could have lost its connection to the Internet.&amp;nbsp; In load balancing scenarios it’s not uncommon to see 408’s when the load balancer does not have affinity (sticky settings) set.&amp;nbsp; In load balancing scenarios, when the player attempts to post back to the server, particularly if the client is using HTTP 1.0 for the connection, it posts on a new TCP session.&amp;nbsp; That new session could get load balanced to a different server.&amp;nbsp; The original server that had streamed the audio/video to the client&amp;nbsp;then does not receive the log post, so it logs a 408.&amp;nbsp; Occasionally we also see misbehaved clients (non-Windows Media Player clients that still report that they are WMP) and proxies.&amp;nbsp; I have noticed that in some logs&amp;nbsp;clients that have the cs(User-Agent) field with a value of:&amp;nbsp; NSPlayer/9.0.0.2980.&amp;nbsp; This is the original release of WMP 9 with no hotfix updates.&amp;nbsp; It is extremely rare to see a client that has not been hotfixed.&amp;nbsp; More likely this is a proxy that is impersonating a WMP client.&amp;nbsp; It’s possible that the proxy is somehow not passing the client stats from the client on to the WMS server.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9920852" width="1" height="1"&gt;</content><author><name>RandomNumber</name><uri>http://blogs.msdn.com/members/RandomNumber.aspx</uri></author><category term="Windows Media Services" scheme="http://blogs.msdn.com/randomnumber/archive/tags/Windows+Media+Services/default.aspx" /><category term="Windows Media Services 2008" scheme="http://blogs.msdn.com/randomnumber/archive/tags/Windows+Media+Services+2008/default.aspx" /><category term="Windows Media Services 9 Series" scheme="http://blogs.msdn.com/randomnumber/archive/tags/Windows+Media+Services+9+Series/default.aspx" /></entry><entry><title>Using HTTP Referer to prevent deep linking to a WMS server</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/randomnumber/archive/2009/10/16/using-http-referer-to-prevent-deep-linking-to-a-wms-server.aspx" /><link rel="enclosure" type="application/x-zip-compressed" length="1050" href="http://blogs.msdn.com/randomnumber/attachment/9908459.ashx" /><id>http://blogs.msdn.com/randomnumber/archive/2009/10/16/using-http-referer-to-prevent-deep-linking-to-a-wms-server.aspx</id><published>2009-10-17T02:04:00Z</published><updated>2009-10-17T02:04:00Z</updated><content type="html">&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;For a number of years now I've had customers ask me about how to prevent deep linking from random people directly to their Windows Media server.&amp;nbsp; Deep linking is described on &lt;A href="http://en.wikipedia.org/wiki/Deep_linking" mce_href="http://en.wikipedia.org/wiki/Deep_linking"&gt;http://en.wikipedia.org/wiki/Deep_linking&lt;/A&gt;.&amp;nbsp; Often this occurs when a web site owner does not ask for permission to point an embedded media player on their own site to a stream on someone else’s Windows Media server.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;The web site owners who host their own Windows Media servers may want to allow only those clients that visit their web site access to the WMS server.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;They may also want to have their client authenticate with a user name and password to be able to stream the video content.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;Let me stop right here and say that the sample code that I’m providing is just that.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;It’s sample code.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;No warranty expressed or implied.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;You’re on your own.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Let me also say that this is not going to keep your content 100% double extra secure.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;It is just an easy *&lt;STRONG&gt;somewhat&lt;/STRONG&gt;* secure way of preventing deep linking.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;If you want high security, look into the &lt;A href="http://msdn.microsoft.com/en-us/windows/bb190309.aspx" mce_href="http://msdn.microsoft.com/en-us/windows/bb190309.aspx"&gt;Windows Media Rights Manager SDK&lt;/A&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;Typically what I have recommended in the past is using an authorization plug-in running in WMS.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Essentially you would generate a query string on your web server that contains some unique value on the end (example:&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT color=#0000ff&gt;mms://streaming.contoso.com/video.wmv?authorization=6883af2234jjji8&lt;/FONT&gt;).&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;In this example the authorization code of 6883af2234jjji8 would be unique for the session while browsing the web site.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;You could then drop that value and a time/date stamp onto a SQL server.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;You would write an authorization plug-in for WMS that would take the client request, look up the authorization ID in the SQL server and then allow or disallow the connection.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;There are a number of variations on this theme, but typically it’s usually done somewhat like this.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;I wanted to do something easier that required much less programming and didn’t have to have special web code or a third server (like SQL) to handle a deep linking issue.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;The code example below is an Active Script sample.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Copy the code (or download it from the link below) and save it as a .vbs file in your &lt;EM&gt;C:\WMPub&lt;/EM&gt; folder.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This folder has the appropriate NTFS permissions for WMS to be able to read from the .vbs and write the log file.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Then locate the &lt;EM&gt;WMS Active Script Event Handler&lt;/EM&gt; in the WMS admin under &lt;EM&gt;Windows Media Services\&amp;lt;machine name&amp;gt;\Properties\Event notification&lt;/EM&gt;.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;In the Active Script plug-in, browse to the script sample in the WMPub folder.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Note, you will need to make one change to the third line in the script as noted in the comment in the code.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Enable the plug-in and you’re ALMOST done.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;The way this script works is by reading the HTTP REFERER header value from the HTTP protocol from the user's GET request.&amp;nbsp; This GET request is made when you link to the content on your Windows Media server from the HTML page on your web server.&amp;nbsp; The HTTP REFERER is automatically included in the request.&amp;nbsp; &lt;SPAN style="mso-spacerun: yes"&gt;If the user is not making a request from a web page on your web&amp;nbsp;site, they will be denied access.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;NOTE:&amp;nbsp; &lt;/SPAN&gt;This value is not available with RTSP.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;That means that you must turn off RTSP for this to work properly.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;Here’s the code:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;Dim strMyServer&lt;BR&gt;'Change the www.contoso.com value to the DNS name of your site.&lt;BR&gt;strMyServer = "www.contoso.com"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;Dim LogFile&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;Sub CreateLog&lt;BR&gt;&amp;nbsp; Dim fso&lt;BR&gt;&amp;nbsp; Set fso = CreateObject("Scripting.FileSystemObject")&lt;BR&gt;&amp;nbsp; Set LogFile = fso.CreateTextFile("c:\wmpub\wmroot\AuthorizationLog.txt", True)&lt;BR&gt;End Sub&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;Sub TraceInformation( strTraceText )&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LogFile.WriteLine( strTraceText )&lt;BR&gt;End Sub&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;Sub OnWMSPluginInitialize ( ServerCtx )&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CreateLog&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; tempStr = "OnWMSPluginInitialize " &amp;amp; Now&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TraceInformation( tempStr )&lt;BR&gt;End sub&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;Sub OnWMSPluginShutdown ()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; tempStr = "OnWMSPluginShutdown " &amp;amp; Now&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TraceInformation( tempStr )&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LogFile.Close&lt;BR&gt;End sub&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;Function OnWMSEAuthorizeOpen (UserCtx, PresCtx, CmdCtx) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim strReferer&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Turning off error checking temporarily while getting the user context.&amp;nbsp; If there is no&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'referer context value then we do not want to end here with an error.&amp;nbsp; If there is no&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'referer context value we will fail at the first if statement and return the access denied.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; On Error Resume Next&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; strReferer = UserCtx("WMS_USER_REFERER").Value&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; On Error Goto 0&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; tempStr = "Validating " &amp;amp; strReferer &amp;amp; " on " &amp;amp; Now&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim DomainName&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DomainName = GetLowerFQDN (strReferer)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if DomainName = LCase(strMyServer) then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OnWMSEAuthorizeOpen = &amp;amp;H00000000&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tempStr = tempStr &amp;amp; " - Access Granted"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OnWMSEAuthorizeOpen = &amp;amp;H80070005&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tempStr = tempStr &amp;amp; " - Access Denied"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end if&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TraceInformation( tempStr )&lt;BR&gt;End Function&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;Function GetLowerFQDN(strURL)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Strips off the initial http:// or https://&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; tempDNS = Mid(strURL, InStr(strURL, "://") + 3)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Checks to see if a port number is used after the DNS name and strips that off.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if Mid(tempDNS, 1, InStr(tempDNS, ":")) &amp;lt;&amp;gt; "" then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tempDNS = Mid(tempDNS, 1, InStr(tempDNS, ":")-1)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end if&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Removes everything after and including the first slash.&amp;nbsp; What remains should be&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'the DNS name.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if Mid(tempDNS, 1, InStr(tempDNS, "/")) &amp;lt;&amp;gt; "" then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tempDNS = Mid(tempDNS, 1, InStr(tempDNS, "/")-1)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end if&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; GetLowerFQDN = LCase(tempDNS)&lt;BR&gt;End Function&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9908459" width="1" height="1"&gt;</content><author><name>RandomNumber</name><uri>http://blogs.msdn.com/members/RandomNumber.aspx</uri></author><category term="Windows Media Services" scheme="http://blogs.msdn.com/randomnumber/archive/tags/Windows+Media+Services/default.aspx" /><category term="Windows Media Services 2008" scheme="http://blogs.msdn.com/randomnumber/archive/tags/Windows+Media+Services+2008/default.aspx" /><category term="Windows Media Services 9 Series" scheme="http://blogs.msdn.com/randomnumber/archive/tags/Windows+Media+Services+9+Series/default.aspx" /></entry><entry><title>Using Windows Media Services 2008 Cache/Proxy plug-in</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/randomnumber/archive/2009/08/18/using-windows-media-services-2008-cache-proxy-plug-in.aspx" /><id>http://blogs.msdn.com/randomnumber/archive/2009/08/18/using-windows-media-services-2008-cache-proxy-plug-in.aspx</id><published>2009-08-18T16:33:00Z</published><updated>2009-08-18T16:33:00Z</updated><content type="html">&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;One of the main differences between Windows Media Services 9.1 on Windows 2003 and WMS 2008 on Windows Server 2008 is the inclusion of the Cache/Proxy plug-in.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;In WMS 9.1 you had to compile (and write some of your own code to do caching) to have cache/proxy functionality.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;WMS 9.1 also required that use have the Advanced Server SKU of 2003 to be able to use custom plug-ins.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;With Windows Server 2008, even in the Standard SKU, the cache/proxy plug-in is included.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;The first step in understanding how to configure the Cache/Proxy plug-in is to find it.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;It’s not in the most obvious place in WMS.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;It is not in this location:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-no-proof: yes"&gt;&lt;?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /&gt;&lt;v:shapetype id=_x0000_t75 coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"&gt;&lt;v:stroke joinstyle="miter"&gt;&lt;/v:stroke&gt;&lt;v:formulas&gt;&lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @0 1 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum 0 0 @1"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @2 1 2"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @3 21600 pixelWidth"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @3 21600 pixelHeight"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @0 0 1"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @6 1 2"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @7 21600 pixelWidth"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @8 21600 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @7 21600 pixelHeight"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @10 21600 0"&gt;&lt;/v:f&gt;&lt;/v:formulas&gt;&lt;v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"&gt;&lt;/v:path&gt;&lt;o:lock v:ext="edit" aspectratio="t"&gt;&lt;/o:lock&gt;&lt;/v:shapetype&gt;&lt;v:shape style="WIDTH: 431.25pt; HEIGHT: 287.25pt; VISIBILITY: visible; mso-wrap-style: square" id=_x0000_i1031 type="#_x0000_t75"&gt;&lt;v:imagedata mce_src="file:///C:\Users\dbristol\AppData\Local\Temp\msohtmlclip1\01\clip_image001.png" src="file:///C:\Users\dbristol\AppData\Local\Temp\msohtmlclip1\01\clip_image001.png" o:title=""&gt;&lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;IMG style="WIDTH: 575px; HEIGHT: 529px" title="Proxy config is not located here" alt="Proxy config is not located here" align=middle src="http://blogs.msdn.com/photos/randomnumber/images/9874228/original.aspx" width=575 height=529 mce_src="http://blogs.msdn.com/photos/randomnumber/images/9874228/original.aspx"&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;/FONT&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;The above section is primarily for administering how the plug-in handles client connections.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Typically this is not something you need to configure at all since much of the focus on proxy configuration is dealing with the upstream connections.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Instead, you want to go up to the server level.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;On the &lt;I style="mso-bidi-font-style: normal"&gt;Properties&lt;/I&gt; tab you will see &lt;B style="mso-bidi-font-weight: normal"&gt;Cache/Proxy Management&lt;/B&gt;.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;If you select this plug-in you will see WMS Cache Proxy on the right.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;U&gt;This&lt;/U&gt; is where you do most of the cache/proxy administration.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Since it is disabled, you will need to enable it to turn your server into a WMS Cache/Proxy server.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Here’s where to find it:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-no-proof: yes"&gt;&lt;v:shape style="WIDTH: 468pt; HEIGHT: 312.75pt; VISIBILITY: visible; mso-wrap-style: square" id=Picture_x0020_2 type="#_x0000_t75" o:spid="_x0000_i1030"&gt;&lt;v:imagedata mce_src="file:///C:\Users\dbristol\AppData\Local\Temp\msohtmlclip1\01\clip_image002.png" src="file:///C:\Users\dbristol\AppData\Local\Temp\msohtmlclip1\01\clip_image002.png" o:title=""&gt;&lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;IMG style="WIDTH: 771px; HEIGHT: 516px" title="Cache Proxy 2 - Configure the proxy here" alt="Cache Proxy 2 - Configure the proxy here" src="http://blogs.msdn.com/photos/randomnumber/images/9874237/original.aspx" width=771 height=516 mce_src="http://blogs.msdn.com/photos/randomnumber/images/9874237/original.aspx"&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;All right, now we can actually configure the cache/proxy.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Go to Properties on the plug-in.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;The first thing that you need to decide is the type of proxy that you are setting up.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I’m going to ignore the &lt;B style="mso-bidi-font-weight: normal"&gt;Proxy Redirect&lt;/B&gt; type for the purposes of this article and focus on &lt;B style="mso-bidi-font-weight: normal"&gt;Proxy&lt;/B&gt; and &lt;B style="mso-bidi-font-weight: normal"&gt;Reverse Proxy&lt;/B&gt;.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;First, just to keep things a bit more clear I’m going to now refer to the term “&lt;B style="mso-bidi-font-weight: normal"&gt;Forward Proxy”&lt;/B&gt; instead of &lt;B style="mso-bidi-font-weight: normal"&gt;Proxy&lt;/B&gt; to contrast against the &lt;B style="mso-bidi-font-weight: normal"&gt;Reverse Proxy&lt;/B&gt; type even though you won’t see “forward proxy” referenced in the help docs.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 14pt; mso-bidi-font-size: 11.0pt"&gt;&lt;FONT face=Calibri&gt;Forward Proxy&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;A Forward Proxy is probably the easier of the two proxy types to understand because many people have already implemented something similar with a typical web proxy (such as Microsoft ISA server).&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This type of proxy allows internal network clients to use a common access point for requesting content from the Internet.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;The Forward Proxy is a “client focused” proxy where the main purpose is to save bandwidth on the client’s connection to the Internet.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;You configure the Forward Proxy on the Proxy tab in the WMS Cache Proxy Properties dialog.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;You simply select “Proxy” for the type of proxy.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;That’s it.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;o:p&gt;&lt;IMG style="WIDTH: 461px; HEIGHT: 506px" title="Cache Proxy 3 - Forward Proxy config" alt="Cache Proxy 3 - Forward Proxy config" src="http://blogs.msdn.com/photos/randomnumber/images/9874238/original.aspx" width=461 height=506 mce_src="http://blogs.msdn.com/photos/randomnumber/images/9874238/original.aspx"&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-no-proof: yes"&gt;&lt;v:shape style="WIDTH: 345.75pt; HEIGHT: 379.5pt; VISIBILITY: visible; mso-wrap-style: square" id=Picture_x0020_5 type="#_x0000_t75" o:spid="_x0000_i1029"&gt;&lt;v:imagedata mce_src="file:///C:\Users\dbristol\AppData\Local\Temp\msohtmlclip1\01\clip_image003.png" src="file:///C:\Users\dbristol\AppData\Local\Temp\msohtmlclip1\01\clip_image003.png" o:title=""&gt;&lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;With a Forward Proxy you would configure each Windows Media Player client (more on this later) to point to the Forward Proxy.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;The Forward Proxy could be in a DMZ or be configured to be dual-homed so that one side is connected to the internal network and one side is connected to the Internet.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Here is a typical configuration:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;o:p&gt;&lt;IMG style="WIDTH: 379px; HEIGHT: 672px" title="Cache Proxy 4 - Forward Proxy network diagram " alt="Cache Proxy 4 - Forward Proxy network diagram " src="http://blogs.msdn.com/photos/randomnumber/images/9874243/original.aspx" width=379 height=672 mce_src="http://blogs.msdn.com/photos/randomnumber/images/9874243/original.aspx"&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-no-proof: yes"&gt;&lt;v:shape style="WIDTH: 249.75pt; HEIGHT: 442.5pt; VISIBILITY: visible; mso-wrap-style: square" id=Picture_x0020_1 type="#_x0000_t75" o:spid="_x0000_i1028"&gt;&lt;v:imagedata mce_src="file:///C:\Users\dbristol\AppData\Local\Temp\msohtmlclip1\01\clip_image004.gif" src="file:///C:\Users\dbristol\AppData\Local\Temp\msohtmlclip1\01\clip_image004.gif" o:title="Forward Proxy"&gt;&lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;When a client is requesting content from the Internet, instead of making the request directly from the client to the Internet based WMS server, the client sends the request with the full URL to the WMS Cache/Proxy server.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This cache/proxy in turn makes the request to the Internet WMS server on the client’s behalf.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;The cache/proxy then caches the content (if enabled) and sends the content to the client PC.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;If another client requests the same URL, the content is served from proxies cache instead of using Internet bandwidth to get the file.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This can save quite a bit of network bandwidth upstream from the cache/proxy.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Again, this is very similar to the way you would setup a web proxy server such as ISA.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Because the forward proxy can work with any upstream or origin server (Internet based or internal server), you must configure Windows Media Player to point to the server acting as the WMS cache/proxy.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;There are two main ways to do this.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Manual Location Configuration&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;This is done in Windows Media Player by going to Tools/Options/Network and configuring both HTTP and RTSP to point to the WMS cache/proxy.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;o:p&gt;&lt;IMG style="WIDTH: 413px; HEIGHT: 536px" title="Cache Proxy 5 - WMP proxy settings" alt="Cache Proxy 5 - WMP proxy settings" src="http://blogs.msdn.com/photos/randomnumber/images/9874245/original.aspx" width=413 height=536 mce_src="http://blogs.msdn.com/photos/randomnumber/images/9874245/original.aspx"&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-no-proof: yes"&gt;&lt;v:shape style="WIDTH: 309.75pt; HEIGHT: 402pt; VISIBILITY: visible; mso-wrap-style: square" id=Picture_x0020_4 type="#_x0000_t75" o:spid="_x0000_i1027"&gt;&lt;v:imagedata mce_src="file:///C:\Users\dbristol\AppData\Local\Temp\msohtmlclip1\01\clip_image005.png" src="file:///C:\Users\dbristol\AppData\Local\Temp\msohtmlclip1\01\clip_image005.png" o:title=""&gt;&lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;In this dialog you would click on the &lt;I style="mso-bidi-font-style: normal"&gt;Configure…&lt;/I&gt; button and choose the &lt;I style="mso-bidi-font-style: normal"&gt;Use the following proxy server&lt;/I&gt; radio button and put in the proxy name or address.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Do this for both HTTP and RTSP since the WMS cache/proxy supports both protocols.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Using Group Policy to set the proxy&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;If your clients are joined to Active Directory then you can use Group Policy to push down a policy to configure Windows Media Player’s proxy settings.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This is very similar to the way you can push down the proxy settings for Internet Explorer.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Run the Group Policy Editor by going to Start/Run and typing in: gpedit.msc.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Navigate to User Configuration\Administrative Templates\Windows Components\Windows Media Player\Networking.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;You can then configure the proxy settings for RTSP, HTTP, and MMS similar to how you configured it in Windows Media Player.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 14pt; mso-bidi-font-size: 11.0pt"&gt;&lt;FONT face=Calibri&gt;Reverse Proxy&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;By contrast, the reverse proxy is a more “server focused” proxy.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This is typically used for a Content Delivery Network (CDN) type of setup where you have a number of servers that you are load balancing to handle a large client load.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Instead of manually replicating on-demand content to each edge server&amp;nbsp;or configuring each edge server for a live stream you can use a reverse proxy to “mirror” the content on an origin server.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Configure each of the reverse proxies to point to the origin server (via name or IP address) on the &lt;STRONG&gt;Proxy&lt;/STRONG&gt; tab in the &lt;STRONG&gt;WMS Cache Proxy Properties&lt;/STRONG&gt;.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Select the &lt;STRONG&gt;Reverse Proxy&lt;/STRONG&gt; radio button.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Note that you can only specify one origin content server.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;IMG style="WIDTH: 462px; HEIGHT: 507px" title="Cache Proxy 6 - Reverse proxy settings" alt="Cache Proxy 6 - Reverse proxy settings" src="http://blogs.msdn.com/photos/randomnumber/images/9874246/original.aspx" width=462 height=507 mce_src="http://blogs.msdn.com/photos/randomnumber/images/9874246/original.aspx"&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-no-proof: yes"&gt;&lt;v:shape style="WIDTH: 279pt; HEIGHT: 306.75pt; VISIBILITY: visible; mso-wrap-style: square" id=Picture_x0020_7 type="#_x0000_t75" o:spid="_x0000_i1026"&gt;&lt;v:imagedata mce_src="file:///C:\Users\dbristol\AppData\Local\Temp\msohtmlclip1\01\clip_image006.png" src="file:///C:\Users\dbristol\AppData\Local\Temp\msohtmlclip1\01\clip_image006.png" o:title=""&gt;&lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;When a client makes a request to the reverse proxy the proxy checks its cache to see if it can serve the request locally.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;If it cannot then it requests the content from the origin server, caches it locally, and sends the content to the client.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;If the client is requesting a live stream then the reverse proxy will use a single connection back to the origin.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;The proxy then &lt;B style="mso-bidi-font-weight: normal"&gt;splits&lt;/B&gt; the live stream so that multiple clients can view the stream even though only one connection is made back to the origin server.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Here is a typical reverse proxy setup:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;IMG style="WIDTH: 307px; HEIGHT: 616px" title="Cache Proxy 7 - Reverse Proxy network diagram" alt="Cache Proxy 7 - Reverse Proxy network diagram" src="http://blogs.msdn.com/photos/randomnumber/images/9874247/original.aspx" width=307 height=616 mce_src="http://blogs.msdn.com/photos/randomnumber/images/9874247/original.aspx"&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-no-proof: yes"&gt;&lt;v:shape style="WIDTH: 180pt; HEIGHT: 360.75pt; VISIBILITY: visible; mso-wrap-style: square" id=Picture_x0020_6 type="#_x0000_t75" o:spid="_x0000_i1025"&gt;&lt;v:imagedata mce_src="file:///C:\Users\dbristol\AppData\Local\Temp\msohtmlclip1\01\clip_image007.gif" src="file:///C:\Users\dbristol\AppData\Local\Temp\msohtmlclip1\01\clip_image007.gif" o:title=""&gt;&lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: 120%; MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;With a load balancer in front of the three reverse proxies in this diagram the three serves can handle much more load than a single server. &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;Note that typically the load balancer will expose a single URL to the client so that all three servers may appear as one address.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: 120%; MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 14pt; mso-bidi-font-size: 11.0pt"&gt;Capabilities&lt;/SPAN&gt;&lt;/B&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;TABLE style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-COLLAPSE: collapse; BORDER-TOP: medium none; BORDER-RIGHT: medium none; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt" class=MsoTableGrid border=1 cellSpacing=0 cellPadding=0 class="MsoTableGrid"&gt;
&lt;TBODY&gt;
&lt;TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: black 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1" vAlign=top width=213&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Feature&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1" vAlign=top width=213&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Forward Proxy&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1" vAlign=top width=213&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Reverse Proxy&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 1"&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: black 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1" vAlign=top width=213&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Client configuration required&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=213&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=213&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;No&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 2"&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: black 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1" vAlign=top width=213&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Can load balance proxies&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=213&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=213&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 3"&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: black 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1" vAlign=top width=213&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Can proxy to any WMS server&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=213&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Yes&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=213&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;No&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 4"&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: black 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1" vAlign=top width=213&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;Meant for corporate environments&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=213&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;Yes&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=213&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;No&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 5; mso-yfti-lastrow: yes"&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: black 1pt solid; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1" vAlign=top width=213&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;Meant for CDNs&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=213&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;No&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: #f0f0f0; PADDING-BOTTOM: 0in; BACKGROUND-COLOR: transparent; PADDING-LEFT: 5.4pt; WIDTH: 159.6pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; BORDER-RIGHT: black 1pt solid; PADDING-TOP: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=213&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;Yes&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&lt;/FONT&gt;&lt;/o:p&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: 120%; MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="LINE-HEIGHT: 120%; FONT-SIZE: 14pt; mso-bidi-font-size: 11.0pt"&gt;&lt;FONT face=Calibri&gt;Gotchas&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: 120%; TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpFirst&gt;&lt;SPAN style="LINE-HEIGHT: 120%; FONT-FAMILY: Symbol; FONT-SIZE: 14pt; mso-bidi-font-size: 11.0pt; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;While it is possible to use multiple tiers of reverse proxies, not all tiers will cache content or split streams.&lt;SPAN style="LINE-HEIGHT: 120%; FONT-SIZE: 14pt; mso-bidi-font-size: 11.0pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: 120%; TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="LINE-HEIGHT: 120%; FONT-FAMILY: Symbol; FONT-SIZE: 14pt; mso-bidi-font-size: 11.0pt; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Make sure you check the &lt;I style="mso-bidi-font-style: normal"&gt;Limit Disk Quota&lt;/I&gt; box on the Cache tab.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Otherwise you may end up running out of disk space.&lt;SPAN style="LINE-HEIGHT: 120%; FONT-SIZE: 14pt; mso-bidi-font-size: 11.0pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: 120%; TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="LINE-HEIGHT: 120%; FONT-FAMILY: Symbol; FONT-SIZE: 14pt; mso-bidi-font-size: 11.0pt; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;If you use server-side playlists on the origin server, the content will not be cached on a proxy.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This is because the proxy cannot predict the behavior of the server-side playlist.&lt;SPAN style="LINE-HEIGHT: 120%; FONT-SIZE: 14pt; mso-bidi-font-size: 11.0pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: 120%; TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpLast&gt;&lt;SPAN style="LINE-HEIGHT: 120%; FONT-FAMILY: Symbol; FONT-SIZE: 14pt; mso-bidi-font-size: 11.0pt; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Reverse proxies do not pass authentication requests from the origin to the client.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;If you need to do authentication, then do the authentication on the reverse proxy itself.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: 120%; TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpLast&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="LINE-HEIGHT: 120%; FONT-FAMILY: Symbol; FONT-SIZE: 14pt; mso-bidi-font-size: 11.0pt; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;When a server is configured as a reverse proxy, the local publishing points are no longer accessible.&amp;nbsp; The reverse proxy truly mirrors the origin server.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: 120%; TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpLast&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="LINE-HEIGHT: 120%; FONT-SIZE: 14pt; mso-bidi-font-size: 11.0pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: 120%; MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="LINE-HEIGHT: 120%; FONT-SIZE: 14pt; mso-bidi-font-size: 11.0pt"&gt;&lt;FONT face=Calibri&gt;References&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: 120%; MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="LINE-HEIGHT: 120%; FONT-SIZE: 12pt; mso-bidi-font-size: 11.0pt"&gt;Caching and proxying content with Windows Media Services&lt;/SPAN&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;A href="http://www.microsoft.com/windows/windowsmedia/howto/articles/cache_proxy.aspx" mce_href="http://www.microsoft.com/windows/windowsmedia/howto/articles/cache_proxy.aspx"&gt;&lt;FONT size=3 face=Calibri&gt;http://www.microsoft.com/windows/windowsmedia/howto/articles/cache_proxy.aspx&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt; &lt;SPAN style="LINE-HEIGHT: 120%; FONT-FAMILY: 'Verdana','sans-serif'; COLOR: #3366cc; FONT-SIZE: 15.5pt; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9874229" width="1" height="1"&gt;</content><author><name>RandomNumber</name><uri>http://blogs.msdn.com/members/RandomNumber.aspx</uri></author><category term="Windows Media Services 2008" scheme="http://blogs.msdn.com/randomnumber/archive/tags/Windows+Media+Services+2008/default.aspx" /><category term="Cache/Proxy" scheme="http://blogs.msdn.com/randomnumber/archive/tags/Cache_2F00_Proxy/default.aspx" /><category term="Proxy" scheme="http://blogs.msdn.com/randomnumber/archive/tags/Proxy/default.aspx" /></entry><entry><title>WMP debug page to dump player events</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/randomnumber/archive/2009/07/20/wmp-debug-page-to-dump-player-events.aspx" /><link rel="enclosure" type="application/x-zip-compressed" length="3143" href="http://blogs.msdn.com/randomnumber/attachment/9842031.ashx" /><id>http://blogs.msdn.com/randomnumber/archive/2009/07/20/wmp-debug-page-to-dump-player-events.aspx</id><published>2009-07-20T21:11:00Z</published><updated>2009-07-20T21:11:00Z</updated><content type="html">&lt;P&gt;Attached to this post I've included a HTML file (inside the zip) that I use all of the time to see what events the player is throwing.&amp;nbsp; I've used it to see if there are scripts in a customer's video, to see how many times my player rebuffers in a particular time period, to see what errors are being thrown, etc.&amp;nbsp; It's something that anyone that works with Windows Media streaming should have.&amp;nbsp; &amp;lt;Credit for it's creation goes to my friend Rob.&amp;gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9842031" width="1" height="1"&gt;</content><author><name>RandomNumber</name><uri>http://blogs.msdn.com/members/RandomNumber.aspx</uri></author><category term="Windows Media Player" scheme="http://blogs.msdn.com/randomnumber/archive/tags/Windows+Media+Player/default.aspx" /></entry><entry><title>Forcing the embedded player to reconnect when an error occurs</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/randomnumber/archive/2009/07/14/forcing-the-embedded-player-to-reconnect-when-an-error-occurs.aspx" /><id>http://blogs.msdn.com/randomnumber/archive/2009/07/14/forcing-the-embedded-player-to-reconnect-when-an-error-occurs.aspx</id><published>2009-07-14T18:16:00Z</published><updated>2009-07-14T18:16:00Z</updated><content type="html">&lt;P&gt;In the next few posts, I am going to discuss high availability scenarios for times when you absolutely must deliver your&amp;nbsp;video.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For today's post, I'm going to talk about how to have an embedded version of&amp;nbsp;WMP reconnect to the stream if there is an error.&amp;nbsp; This is useful in the instances where you have a live stream and want the player to reconnect to the stream if there is an error.&amp;nbsp; Here is the sample:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&amp;lt;html&amp;gt;&lt;BR&gt;&amp;lt;body&amp;gt;&lt;BR&gt;&amp;lt;OBJECT ID="MPlayer" height="310" width="320" CLASSID="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6"&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;PARAM NAME="URL" VALUE="mms://mediaserver/live"&amp;gt;&lt;BR&gt;&amp;lt;/OBJECT&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;SCRIPT LANGUAGE="javascript" FOR="MPlayer" EVENT="Error()"&amp;gt;&lt;BR&gt;&amp;lt;!--&lt;BR&gt;MPlayer.play();&lt;BR&gt;--&amp;gt;&lt;BR&gt;&amp;lt;/SCRIPT&amp;gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;I tried to keep this extremely simple, but whenever you're doing scripting for events for browsers there are always platform and versioning issues.&amp;nbsp; Essentially we are just using the OBJECT tag to embed the WMP control.&amp;nbsp; I pointed the URL to a live stream on a WMS server.&amp;nbsp; I then created a script to listen for the error event on&amp;nbsp;player object.&amp;nbsp; In this example I don't check to see what the error is, I just tell the player to play.&amp;nbsp; The assumption&amp;nbsp;I am making is that maybe there was a temporary network error and I am just telling the player to reconnect.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9833275" width="1" height="1"&gt;</content><author><name>RandomNumber</name><uri>http://blogs.msdn.com/members/RandomNumber.aspx</uri></author><category term="Windows Media Player" scheme="http://blogs.msdn.com/randomnumber/archive/tags/Windows+Media+Player/default.aspx" /><category term="load balancing" scheme="http://blogs.msdn.com/randomnumber/archive/tags/load+balancing/default.aspx" /></entry><entry><title>How to maintain an encoder/server connection on a problematic network</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/randomnumber/archive/2009/07/09/how-to-maintain-an-encoder-server-connection-on-a-problematic-network.aspx" /><id>http://blogs.msdn.com/randomnumber/archive/2009/07/09/how-to-maintain-an-encoder-server-connection-on-a-problematic-network.aspx</id><published>2009-07-10T01:19:00Z</published><updated>2009-07-10T01:19:00Z</updated><content type="html">&lt;P&gt;I occasionally get contacted by customers that are having problems keeping their &lt;a href="http://www.microsoft.com/windows/windowsmedia/forpros/encoder/default.mspx"&gt;Windows Media Encoder 9 Series&lt;/a&gt; encoder and &lt;a href="http://www.microsoft.com/windows/windowsmedia/forpros/serve/prodinfo2008.aspx"&gt;Windows Media Services 2008&lt;/a&gt; server connected.&amp;nbsp; Often it is simply that the network between the two is having some issues, however briefly.&amp;nbsp; Both the encoder and server have resiliency built in but network conditions can get to a point where the stream stops.&amp;nbsp; The server's publishing point may either stop or&amp;nbsp;continue to run while it is attempting to reconnect.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;The best thing to do in this situation is to get the encoder and server setup to reconnect to each other whenever there is an error.&amp;nbsp; Since the encoder supports both push and pull connections, there is a method that works best for each connection type.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Encoder Pull&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Typically a broadcast publishing point on WMS simply points to the encoder HTTP URL.&amp;nbsp; Most of the time this is okay, but again if the network is having problems it may not be enough.&amp;nbsp; What you can do is setup a server side playlist (WSX) to attempt to reconnect if there is a problem. WMS itself will try to do that on the same TCP session, but this workaround will establish a new session and give the network a few seconds to recover.&amp;nbsp; Here's the playlist:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&amp;lt;?wsx&amp;nbsp; version="1.0" encoding="utf-8"?&amp;gt;&lt;BR&gt;&amp;lt;smil repeatCount="indefinite"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;media src="http://encoder:8080?wmreconnect=0"/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;media src="c:\wmpub\wmroot\proseware_leadin.jpg"&amp;nbsp;dur="10"/&amp;gt;&lt;BR&gt;&amp;lt;/smil&amp;gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;There are three things to point out here.&amp;nbsp; First you will see that the first media item in the playlist is our connection to the encoder.&amp;nbsp; I've added the wmreconnect=0 query string.&amp;nbsp; This turns off the WMS reconnection logic.&amp;nbsp; We're doing this because if there is any sort of problem we want the server to immediately fail and roll to the next item in the playlist.&amp;nbsp; Second, is the next item in the playlist.&amp;nbsp; Above I have just pointed it to a JPG file that's one of the samples that comes with WMS.&amp;nbsp; I've set it to play for 10 seconds, but you could set it to a shorter time.&amp;nbsp; You could change this piece of content to any number of things.&amp;nbsp; You could use a "sorry we're having technical difficulties" video or JPG.&amp;nbsp; You could set it to a JPG file that is completely black.&amp;nbsp; Or you could point it to a different encoder machine.&amp;nbsp; That's actually the best option if you have two separate encoders encoding the same content.&amp;nbsp; This gives you a lot of redundency.&amp;nbsp; The only thing you can't use is the same encoder URL as the first one.&amp;nbsp; WMS sees this as the same playlist item and does not reconnect in the same way.&amp;nbsp; Third we have the SMIL repeatCount set to "indefinite".&amp;nbsp; This causes the items between the SMIL and /SMIL tags to be repeated for as long as the publishing point is running.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;Encoder Push&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;With push it is a little different.&amp;nbsp;Instead of the server being responsible for maintaining the connection, now the encoder is responsible for maintaining the connection.&amp;nbsp; Since Windows Media Encoder does not have playlist functionality we created some hotfixes to help with the reconnection issues.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;1a) Install fix from &lt;A href="http://support.microsoft.com/kb/929182"&gt;http://support.microsoft.com/kb/929182&lt;/A&gt; if running WME on Windows Vista.&lt;BR&gt;1b) Install fix from &lt;A href="http://support.microsoft.com/kb/915483"&gt;http://support.microsoft.com/kb/915483&lt;/A&gt; if running WME on Windows XP.&lt;/P&gt;
&lt;P&gt;2) Make the registry changes (but do not install the hotfix from) &lt;A href="http://support.microsoft.com/kb/895182"&gt;http://support.microsoft.com/kb/895182&lt;/A&gt;. &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;With these fixes installed the encoder should keep attempting to reconnect to the server until it gets a connection.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9827778" width="1" height="1"&gt;</content><author><name>RandomNumber</name><uri>http://blogs.msdn.com/members/RandomNumber.aspx</uri></author><category term="Windows Media Services" scheme="http://blogs.msdn.com/randomnumber/archive/tags/Windows+Media+Services/default.aspx" /><category term="Windows Media Services 9 Series" scheme="http://blogs.msdn.com/randomnumber/archive/tags/Windows+Media+Services+9+Series/default.aspx" /></entry><entry><title>Silverlight installation requires the SSE CPU instruction set</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/randomnumber/archive/2009/05/27/silverlight-installation-requires-the-sse-cpu-instruction-set.aspx" /><id>http://blogs.msdn.com/randomnumber/archive/2009/05/27/silverlight-installation-requires-the-sse-cpu-instruction-set.aspx</id><published>2009-05-27T18:29:00Z</published><updated>2009-05-27T18:29:00Z</updated><content type="html">&lt;P&gt;One of the guys on my team recently tried installing Silverlight 2.0 on one of his older systems.&amp;nbsp; He got the error, "Unable to install Silverlight" and, "Your processor is not supported."&amp;nbsp; When you click on &lt;EM&gt;More information&lt;/EM&gt; you see the error:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Message ID: 1503&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Microsoft Silverlight is not supported on your computer.&amp;nbsp; Your CPU does not support the SSE instruction set which is required by Silverlight.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Intel introduced the SSE extension in 1999.&amp;nbsp; AMD added SSE support in 2001.&amp;nbsp; Machines with processors that were manufactured prior to those dates did not have the SSE extension.&lt;/P&gt;
&lt;P&gt;Silverlight primarily uses the SSE extension for its floating point support.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9644561" width="1" height="1"&gt;</content><author><name>RandomNumber</name><uri>http://blogs.msdn.com/members/RandomNumber.aspx</uri></author><category term="Silverlight" scheme="http://blogs.msdn.com/randomnumber/archive/tags/Silverlight/default.aspx" /></entry><entry><title>Fix for WMS 503 issue released</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/randomnumber/archive/2009/03/30/fix-for-wms-503-issue-released.aspx" /><id>http://blogs.msdn.com/randomnumber/archive/2009/03/30/fix-for-wms-503-issue-released.aspx</id><published>2009-03-30T18:38:00Z</published><updated>2009-03-30T18:38:00Z</updated><content type="html">&lt;P&gt;Since this is a fairly major issue for a number of people that are running &lt;a href="http://www.microsoft.com/windows/windowsmedia/forpros/serve/prodinfo2008.aspx"&gt;Windows Media Services 2008&lt;/a&gt;, I thought this warranted it's own post.&amp;nbsp; I prevously described the issue at &lt;A href="http://blogs.msdn.com/randomnumber/archive/2008/09/05/wmp-unable-to-connect-to-wms-9-5-wms-returning-503-service-unavailable.aspx"&gt;http://blogs.msdn.com/randomnumber/archive/2008/09/05/wmp-unable-to-connect-to-wms-9-5-wms-returning-503-service-unavailable.aspx&lt;/A&gt;&amp;nbsp;where WMS returns a 503 error when the server is behind a NAT.&amp;nbsp; A fix is now published at &lt;A href="http://support.microsoft.com/kb/960372" rel=nofollow target=_new&gt;&lt;FONT color=#006ff7&gt;http://support.microsoft.com/kb/960372&lt;/FONT&gt;&lt;/A&gt;.&amp;nbsp; It also contains two other fixes that were not included in WMS 2008 that had been fixed for WMS 9.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9519283" width="1" height="1"&gt;</content><author><name>RandomNumber</name><uri>http://blogs.msdn.com/members/RandomNumber.aspx</uri></author></entry><entry><title>IIS Smooth Streaming beta released</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/randomnumber/archive/2009/02/24/iis-smooth-streaming-beta-released.aspx" /><id>http://blogs.msdn.com/randomnumber/archive/2009/02/24/iis-smooth-streaming-beta-released.aspx</id><published>2009-02-24T19:58:00Z</published><updated>2009-02-24T19:58:00Z</updated><content type="html">&lt;P&gt;The next big thing in streaming is now released in beta form.&amp;nbsp; That is the IIS 7 Smooth Streaming:&amp;nbsp; &lt;A href="http://www.iis.net/extensions/SmoothStreaming"&gt;http://www.iis.net/extensions/SmoothStreaming&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;This is the technology that was used last summer with Silverlight&amp;nbsp;for the&amp;nbsp;Olympics to stream the on demaind content.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9442878" width="1" height="1"&gt;</content><author><name>RandomNumber</name><uri>http://blogs.msdn.com/members/RandomNumber.aspx</uri></author></entry><entry><title>Troubleshooting the Silverlight MediaElement 4001 Error</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/randomnumber/archive/2009/02/09/troubleshooting-the-silverlight-mediaelement-4001-error.aspx" /><id>http://blogs.msdn.com/randomnumber/archive/2009/02/09/troubleshooting-the-silverlight-mediaelement-4001-error.aspx</id><published>2009-02-09T23:03:00Z</published><updated>2009-02-09T23:03:00Z</updated><content type="html">&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;This is my first post on Silverlight, so I thought I would post on a common issue that I've seen developers have problems with.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Since I focus mainly on the MediaElement piece of Silverlight I'm going to stick almost solely to that on this blog when I post about Silverlight.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;If you've ever developed a Silverlight application that plays video, you've probably at some point seen the following error:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&lt;FONT size=3&gt;Silverlight error message&lt;BR&gt;ErrorCode: 4001&lt;BR&gt;ErrorType: MediaError&lt;BR&gt;Message: AG_E_NETWORK_ERROR&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;In fact, it's probably the only error you've ever seen with regards to the MediaElement.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;That's because it IS the only error that MediaElement throws.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Here are a few possible causes for this error:&lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;Streaming from WMS through an Authenticated Proxy&lt;/B&gt; - Silverlight gets video in two different modes.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;If the video is coming from a web server, such as IIS, then it is progressively downloading the video from the web site.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This downloading is handled by the browser.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;If Silverlight is streaming from a Windows Media server then this streaming is handled internally by Silverlight and not by the browser.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Since browsers support proxy authentication you will not see the 4001 error if you are getting the video content from a web server.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Silverlight does not support proxy authentication natively and therefore doesn't support proxy authentication when streaming from a Windows Media server.&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Calibri size=3&gt;There are only two workarounds, and they are the obvious ones.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;First, don't require proxy authentication on the proxy.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Second, put the content on a web server.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;In the enterprise, this may not be an option.&lt;BR&gt;&lt;/FONT&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;Codec Not Supported by Silverlight&lt;/B&gt; - Because Silverlight streams .wmv and .wma files you may have a video encoded with a codec that Silverlight does not support.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;The file extension .wma and .wmv are both forms of the ASF file format that Silverlight supports.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;However, because ASF is just a file container you can use just about any codec&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;to compress the audio and video within that ASF container.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;While the Windows Media Audio v9 codec (often abbreviated WMA) and Windows Media Video v9 codec (often abbreviated WMV) are some of the most common codecs you do occasionally find other codecs within .wma and .wmv files.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;For example, a number of years ago Windows Media Encoder used the ACELP.net audio codec for voice.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Silverlight does not support this codec, so you get an error.&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;The workaround for this is to re-encode&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;the video into a format that Silverlight supports.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;For a list of supported codecs, see the MSDN article: &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;A class="" title="Supported Media Formats, Protocols, and Log Fields" href="http://msdn.microsoft.com/en-us/library/cc189080(vs.95).aspx" mce_href="http://msdn.microsoft.com/en-us/library/cc189080(vs.95).aspx"&gt;&lt;FONT face=Calibri size=3&gt;Supported Media Formats, Protocols, and Log Fields&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;.&lt;BR&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;Incorrect Pathing&lt;/B&gt; - This is your common 'file not found' type problem.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;If you mistype the path to the video then you're going to get the 4001 error.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;You can often find pathing issues by typing the full URL into your browser.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;If Windows Media Player opens and cannot find the file then most likely you are using an incorrect URL.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;If you are a developer and are building a Silverlight 2 project with Visual Studio and including the video as part of your project, make sure that the video is in the ClientBin folder in the Web project.&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;Crossing Zones&lt;/B&gt; - As part of the Silverlight security model, when you run an application in a more secure zone (such as from the local hard drive) you cannot play video from a less secure zone.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;An example of this is building a Silverlight application that is run from the local web server that Visual Studio instantiates.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;In this scenario you are crossing from the Local Intranet Zone where the Silverlight application is running to the Internet Zone where the video is being streamed from.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This is not allowed for security reasons.&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Calibri size=3&gt;As a workaround try to keep both the location were the Silverlight application and the video are in the same zone.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Keep in mind that it IS possible to cross domains, just not zones.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;You could host your Silverlight application on one domain and serve your video content from another domain.&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9409230" width="1" height="1"&gt;</content><author><name>RandomNumber</name><uri>http://blogs.msdn.com/members/RandomNumber.aspx</uri></author><category term="Silverlight" scheme="http://blogs.msdn.com/randomnumber/archive/tags/Silverlight/default.aspx" /></entry><entry><title>Getting your CD or DVD listed so it shows automatically in Windows Media Player</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/randomnumber/archive/2009/01/15/getting-your-cd-or-dvd-listed-so-it-shows-automatically-in-windows-media-player.aspx" /><id>http://blogs.msdn.com/randomnumber/archive/2009/01/15/getting-your-cd-or-dvd-listed-so-it-shows-automatically-in-windows-media-player.aspx</id><published>2009-01-15T19:43:00Z</published><updated>2009-01-15T19:43:00Z</updated><content type="html">When you are ripping CDs with Windows Media Player, the player can automatically go out to the Internet to&amp;nbsp; retrieve the metadata describing the CD such as the album name, artist, track information, etc.&amp;nbsp; If you are an artist that would like to have your CD or DVD information added to the database, you need to contact All Music Guide (AMG).&amp;nbsp; Microsoft has no direct control over this listing since we license the database from &lt;A class="" title=AMG href="http://www.allmusic.com/" target=_blank mce_href="http://www.allmusic.com/"&gt;AMG&lt;/A&gt;.&amp;nbsp; The page &lt;A class="" title="Product Submissions" href="http://allmusic.com/cg/amg.dll?p=amg&amp;amp;sql=32:amg/info_pages/a_product_submissions.html" target=_blank mce_href="http://allmusic.com/cg/amg.dll?p=amg&amp;amp;sql=32:amg/info_pages/a_product_submissions.html"&gt;http://allmusic.com/cg/amg.dll?p=amg&amp;amp;sql=32:amg/info_pages/a_product_submissions.html&lt;/A&gt; describes what you need to do.&amp;nbsp; Once AMG's database is updated, the data will be propagated to Microsoft and other licensees of AMG’s database.&amp;nbsp; This usually takes a few weeks.&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9321156" width="1" height="1"&gt;</content><author><name>RandomNumber</name><uri>http://blogs.msdn.com/members/RandomNumber.aspx</uri></author><category term="Windows Media Player" scheme="http://blogs.msdn.com/randomnumber/archive/tags/Windows+Media+Player/default.aspx" /></entry><entry><title>Windows Media Player now works with Kerberos</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/randomnumber/archive/2008/12/10/windows-media-player-now-works-with-kerberos.aspx" /><id>http://blogs.msdn.com/randomnumber/archive/2008/12/10/windows-media-player-now-works-with-kerberos.aspx</id><published>2008-12-10T23:05:00Z</published><updated>2008-12-10T23:05:00Z</updated><content type="html">&lt;P&gt;You may have seen in a network trace that when Windows Media Player&amp;nbsp;connects to&amp;nbsp;Windows Media Services that if the server had &lt;EM&gt;Negotiate&lt;/EM&gt; authentication enabled for the publishing point that Kerberos would fail with a Service Principal Name unknown error.&amp;nbsp; Specifically in the trace you'd see a response that contained &lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;KRB5KDC_ERR_S_PRINCIPAL_UNKNOWN.&amp;nbsp; WMP would fail silently and roll over to NTLM.&amp;nbsp; NTLM would then handle the authentication.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;As of December 9, 2008, Windows Media Player 11 now works with Kerberos authentication.&amp;nbsp; A security update, &lt;A href="http://www.microsoft.com/technet/security/bulletin/ms08-076.mspx"&gt;http://www.microsoft.com/technet/security/bulletin/ms08-076.mspx&lt;/A&gt;, changed the way that the player handles Kerberos.&amp;nbsp; I've only tested this with WMP 11, but it's possible that the update affected older versions of the player as well allowing them to work.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9192253" width="1" height="1"&gt;</content><author><name>RandomNumber</name><uri>http://blogs.msdn.com/members/RandomNumber.aspx</uri></author><category term="Windows Media Player" scheme="http://blogs.msdn.com/randomnumber/archive/tags/Windows+Media+Player/default.aspx" /></entry><entry><title>WMP unable to connect to WMS 2008; WMS returning 503 Service Unavailable</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/randomnumber/archive/2008/09/05/wmp-unable-to-connect-to-wms-9-5-wms-returning-503-service-unavailable.aspx" /><id>http://blogs.msdn.com/randomnumber/archive/2008/09/05/wmp-unable-to-connect-to-wms-9-5-wms-returning-503-service-unavailable.aspx</id><published>2008-09-05T21:12:00Z</published><updated>2008-09-05T21:12:00Z</updated><content type="html">&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;I've talked to a number of people that are having problems streaming from&amp;nbsp;&lt;a href="http://www.microsoft.com/windows/windowsmedia/forpros/serve/prodinfo2008.aspx"&gt;Windows Media Services 2008&lt;/a&gt; on Windows Server 2008 when the server is behind a NAT firewall, some proxies, or load balancers.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Clients on the internal network work just fine.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;In a network trace you'll see at WMS is returning a &lt;/FONT&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;503 Service Unavailable&lt;/SPAN&gt;&lt;FONT face=Calibri&gt; as the first response to the RTSP DESCRIBE or HTTP GET.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;WMS is doing a DNS query for the domain name in the RTSP or HTTP request when the request is not the local NetBIOS, local DNS, or local IP.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;If a WMP client is requesting content through a NAT or similar device (such as some proxies and load balancers&amp;nbsp;that hides or translate an external URL to an internal URL), the requested address might be something like &lt;/FONT&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;mms://streaming.contoso.com/live&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;However internally the server name might be &lt;/FONT&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;WMS01&lt;/SPAN&gt;&lt;FONT face=Calibri&gt; or &lt;/FONT&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;WMS01.corp.contoso.com&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This generally is only going to happen if you're using Network Address Translation.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;WMS 9.5 now contains a cache/proxy in the box.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;What's happening is when WMS doesn't recognize the requested URL as itself it is assuming that the request may be a proxy request.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This happens even if the cache/proxy plug-in is disabled.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Because internal clients would use the internal IP, NetBIOS, or DNS name, the server recognizes those request as intended for the local server itself.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;You can work around this problem by adding any possible DNS name that could be requested by a client to the WMS server's &lt;/FONT&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;c:\windows\system32\drivers\etc\HOSTS&lt;/SPAN&gt;&lt;FONT face=Calibri&gt; file and point it to &lt;/FONT&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;localhost&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;It would be something like:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&lt;FONT size=3&gt;127.0.0.1&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;streaming.contoso.com&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;We're investigating a way to fix this issue more permanently.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8926792" width="1" height="1"&gt;</content><author><name>RandomNumber</name><uri>http://blogs.msdn.com/members/RandomNumber.aspx</uri></author><category term="Windows Media Player" scheme="http://blogs.msdn.com/randomnumber/archive/tags/Windows+Media+Player/default.aspx" /><category term="Windows Media Services" scheme="http://blogs.msdn.com/randomnumber/archive/tags/Windows+Media+Services/default.aspx" /><category term="503" scheme="http://blogs.msdn.com/randomnumber/archive/tags/503/default.aspx" /><category term="Service Unavailable" scheme="http://blogs.msdn.com/randomnumber/archive/tags/Service+Unavailable/default.aspx" /><category term="Windows Media Services 2008" scheme="http://blogs.msdn.com/randomnumber/archive/tags/Windows+Media+Services+2008/default.aspx" /></entry><entry><title>Cheap load balancing using an ASX as created by an ASP</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/randomnumber/archive/2008/08/27/cheap-load-balancing-using-an-asx-as-created-by-an-asp.aspx" /><id>http://blogs.msdn.com/randomnumber/archive/2008/08/27/cheap-load-balancing-using-an-asx-as-created-by-an-asp.aspx</id><published>2008-08-27T08:38:00Z</published><updated>2008-08-27T08:38:00Z</updated><content type="html">&lt;P&gt;This load balancing solution&amp;nbsp;will cost you a grand total of about 10 minutes of time.&amp;nbsp; Now I will say that it's definitely not the best load balancing solution out there, but it's cheap and works&amp;nbsp;amazingly well for something so simple.&lt;/P&gt;
&lt;P&gt;First I need to explain a feature of &lt;a href="http://msdn.microsoft.com/en-us/library/bb248407(VS.85).aspx"&gt;ASX&lt;/a&gt; files that makes this somewhat bullet proof.&amp;nbsp; ASX files have the very awesomely cool feature of allowing you to specify a rollover URL within an entry tag.&amp;nbsp; This allows you to specify a primary and backup (or many different backups) URL.&amp;nbsp; You do this by specifying multiple ref tags within a single entry tag.&amp;nbsp; This tells the player that if the first one fails, roll to the next ref URL.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&amp;lt;asx version ="3.0"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;entry&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;ref href="mms://server1/video.wmv" mce_href="mms://server1/video.wmv"/&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;ref href="mms://server2/video.wmv" mce_href="mms://server2/video.wmv"/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;/entry&amp;gt;&lt;BR&gt;&amp;lt;/asx&amp;gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;So if for whatever reason our connection to server1 fails we'll rollover to the URL pointing to server2.&amp;nbsp; This works great if all you need&amp;nbsp;is a backup server in case the first one goes down but it doesn't make any attempt to balance the load.&lt;/P&gt;
&lt;P&gt;I love random numbers.&amp;nbsp; Note the blog name.&amp;nbsp; Here's an instance where they really work to our advantage.&amp;nbsp; In the code below I use the randomize function to generate&amp;nbsp;a random number between 0 and 1.&amp;nbsp; I use this as the deciding factor on how to order my ASX file.&amp;nbsp; Depending on what the random number is, if it's below .5 then you will start with server2 and fail over to server1.&amp;nbsp; If it's above .5 then you start with server1 and fail over to server2:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&amp;lt;% Response.ContentType="video/x-ms-asf" %&amp;gt;&amp;lt;ASX version="3.0"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;entry&amp;gt;&lt;BR&gt;&amp;lt;% randomize&lt;BR&gt;&amp;nbsp;&amp;nbsp; if rnd &amp;gt; .5 then&lt;BR&gt;%&amp;gt;&amp;nbsp; &amp;lt;Ref href="mms://server1/live"/&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;Ref href="mms://server2/live"/&amp;gt;&amp;lt;% else %&amp;gt;&amp;nbsp; &amp;lt;Ref href="mms://server2/live"/&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;Ref href="mms://server1/live"/&amp;gt;&amp;lt;% end if %&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;/entry&amp;gt;&lt;BR&gt;&amp;lt;/asx&amp;gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;You could easily expand this example to include 3 or more servers.&amp;nbsp; You'd need to use some &lt;EM&gt;else if&lt;/EM&gt; statements and divide the number of servers into 1 to give you the numbers to check for.&amp;nbsp; For example, if you have 3 servers you'll need to check to see if the random number is below .33 or above .66 (with the else being between the two).&lt;/P&gt;
&lt;P&gt;You could also do something more complicated by maintaing state on the web server to keep track of what the last response to the client was so that you're always going from server1 to server2 to server1, etc.&amp;nbsp; But I've found that to be fairly unnecessary if you're dealing with more than just a handfull of clients.&amp;nbsp; It is possible, but not likely, that one server could just happen to have a lower load because everyone that's connected to it is watching very short clips.&amp;nbsp; Again,&amp;nbsp;I did say this wasn't the best solution out there, but it's definitely cheap.&amp;nbsp; Oh, and it's better than just doing DNS round-robin because with DNS you don't necessarily know if a particular server is down&amp;nbsp;and&amp;nbsp;don't get failover.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8899032" width="1" height="1"&gt;</content><author><name>RandomNumber</name><uri>http://blogs.msdn.com/members/RandomNumber.aspx</uri></author><category term="ASX" scheme="http://blogs.msdn.com/randomnumber/archive/tags/ASX/default.aspx" /><category term="Windows Media Services" scheme="http://blogs.msdn.com/randomnumber/archive/tags/Windows+Media+Services/default.aspx" /><category term="ASP" scheme="http://blogs.msdn.com/randomnumber/archive/tags/ASP/default.aspx" /></entry><entry><title>Using Wallclock Scheduling in WMS to start a broadcast at a specific time</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/randomnumber/archive/2008/08/27/using-wallclock-scheduling-in-wms-to-start-a-broadcast-at-a-specific-time.aspx" /><id>http://blogs.msdn.com/randomnumber/archive/2008/08/27/using-wallclock-scheduling-in-wms-to-start-a-broadcast-at-a-specific-time.aspx</id><published>2008-08-27T04:48:00Z</published><updated>2008-08-27T04:48:00Z</updated><content type="html">&lt;P&gt;Over the years I've talked to a number of people that want to broadcast a live video at a certain time of day.&amp;nbsp; Usually this is in a corporate network where a CEO is doing a large broadcast to the entire company or something similar that needs to happen at a specific time without the intervention of a WMS admin.&amp;nbsp; One of the features that comes with WMS starting in Windows 2003 SP1 is &lt;STRONG&gt;&lt;A title="wallclock scheduling" href="http://msdn.microsoft.com/en-us/library/ms755434.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/ms755434.aspx"&gt;wallclock scheduling&lt;/A&gt;&lt;/STRONG&gt;.&amp;nbsp; This gives you the ability within a server side playlist to trigger an event to take place at a specific time.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;I'll detail two examples of how you can schedule a broadcast.&amp;nbsp; The first one below loops through&amp;nbsp;the three videos indefinitely in the second priority class called "od" until the higher priority "live" priority class fires off at 5:41 PM.&amp;nbsp; This may seem a little out of order, but the way this works is that because "live" is listed above "od" the first priority class would normally play first.&amp;nbsp;&amp;nbsp;However, with the wallclock tag set to begin at a specific time "live" will not start until that time.&amp;nbsp; So the server plays the lower priority "od" until "live" hits it's wallclock scheduled time.&lt;/P&gt;
&lt;P&gt;&amp;lt;?wsx version="1.0" encoding="utf-8"?&amp;gt;&lt;BR&gt;&amp;lt;smil&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;excl&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;priorityClass id="live" lower="pause"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;media src="http://encodermachine:8080" begin="wallclock(17:41:00)"/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/priorityClass&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;priorityClass id="od"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;seq repeatCount="indefinite" begin="0s"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;media src="C:\wmpub\WMRoot\snowboard_300.wmv"/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;media src="C:\wmpub\WMRoot\powered_by_300.wmv"/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;media src="C:\wmpub\WMRoot\racecar_100.wmv"/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/seq&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/priorityClass&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/excl&amp;gt;&lt;BR&gt;&amp;lt;/smil&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;There are times when you don't actually want to stream data the entire time&amp;nbsp;you're waiting for the broadcast.&amp;nbsp; You could throw up a banner video that says, "This video will not play until 5:41 PM" and put some groovy music behind it but the network admin is likely going to wonder why you've been chewing up bandwidth hours before the broadcast.&amp;nbsp; So instead you may just want to start the broadcast at 5:41.&amp;nbsp; You'd think you could delete the "od" priority class and just use the one "live" one to start whenever it's scheduled for.&amp;nbsp; However, there's a requirement in WMS that when a publishing point starts it actually has to play something.&amp;nbsp; Not indefinitely, but it does need to successfully see bits going through the pipeline.&amp;nbsp; So what you do instead is something like this:&lt;/P&gt;
&lt;P&gt;&amp;lt;?wsx version="1.0" encoding="utf-8"?&amp;gt;&lt;BR&gt;&amp;lt;smil&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;excl&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;priorityClass id="live" lower="pause"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;media src=http://encodermachine:8080 begin="wallclock(17:41:00)"/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/priorityClass&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;priorityClass id="od"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;seq begin="0s"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;media src="C:\wmpub\WMRoot\pinball.wmv"/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/seq&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/priorityClass&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/excl&amp;gt;&lt;BR&gt;&amp;lt;/smil&amp;gt;&lt;/P&gt;
&lt;P&gt;Note that all that really happened was that I removed the repeatCount.&amp;nbsp; I changed the "od" priority class to be just the one short pinball.wmv, but that's only because it's the shortest of the sample clips.&amp;nbsp; So what happens is that when the publishing point starts pinball.wmv would play to the end.&amp;nbsp; If you have a client connect as soon as the publishing point starts they will see pinball play and then a black screen.&amp;nbsp; The client may timeout after a couple of minutes because no data is actually being sent.&amp;nbsp; The publishing point won't start sending data until lthe wallclock scheduled time.&amp;nbsp; At that point clients can connect and view the live stream.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8898975" width="1" height="1"&gt;</content><author><name>RandomNumber</name><uri>http://blogs.msdn.com/members/RandomNumber.aspx</uri></author><category term="Windows Media Services" scheme="http://blogs.msdn.com/randomnumber/archive/tags/Windows+Media+Services/default.aspx" /><category term="wsx" scheme="http://blogs.msdn.com/randomnumber/archive/tags/wsx/default.aspx" /><category term="wallclock" scheme="http://blogs.msdn.com/randomnumber/archive/tags/wallclock/default.aspx" /></entry></feed>