<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type='text/xsl' href='http://sartorial.spaces.live.com/mmm2008-05-17_13.22/rsspretty.aspx?rssquery=en-US;http%3a%2f%2fsartorial.spaces.live.com%2fblog%2ffeed.rss' version='1.0'?><rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:msn="http://schemas.microsoft.com/msn/spaces/2005/rss" xmlns:live="http://schemas.microsoft.com/live/spaces/2006/rss" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:cf="http://www.microsoft.com/schemas/rss/core/2005" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Simon Ransom's space: Blog</title><description /><link>http://sartorial.spaces.live.com/blog</link><language>en-US</language><pubDate>Sat, 21 Jun 2008 05:05:19 GMT</pubDate><lastBuildDate>Sat, 21 Jun 2008 05:05:19 GMT</lastBuildDate><generator>Microsoft Spaces v1.1</generator><docs>http://www.rssboard.org/rss-specification</docs><ttl>60</ttl><cf:parentRSS>http://sartorial.spaces.live.com/feed.rss</cf:parentRSS><live:type>blog</live:type><live:identity><live:id>-5885367650949873493</live:id><live:alias>sartorial</live:alias></live:identity><cf:listinfo><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="typelabel" label="Type" /><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="tag" label="Tag" /><cf:group element="category" label="Category" /><cf:sort element="pubDate" label="Date" data-type="date" default="true" /><cf:sort element="title" label="Title" data-type="string" /><cf:sort ns="http://purl.org/rss/1.0/modules/slash/" element="comments" label="Comments" data-type="number" /></cf:listinfo><item><title>Silverlight 2.0 Beta 1 released</title><link>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!184.entry</link><description>&lt;p&gt;Whoohoo &lt;p&gt;&lt;a title="http://www.microsoft.com/silverlight/resources/installationfiles.aspx?v=2.0" href="http://www.microsoft.com/silverlight/resources/installationfiles.aspx?v=2.0"&gt;http://www.microsoft.com/silverlight/resources/installationfiles.aspx?v=2.0&lt;/a&gt; &lt;p&gt;Unfortunately it doesn't come with a commercial go-live license (although you can try and apply for one).&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-5885367650949873493&amp;page=RSS%3a+Silverlight+2.0+Beta+1+released&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sartorial.spaces.live.com&amp;amp;GT1=sartorial"&gt;</description><comments>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!184.entry#comment</comments><guid isPermaLink="true">http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!184.entry</guid><pubDate>Fri, 07 Mar 2008 10:12:27 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sartorial.spaces.live.com/blog/cns!AE52F94DB08EC0AB!184/comments/feed.rss</wfw:commentRss><wfw:comment>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!184.entry#comment</wfw:comment><dcterms:modified>2008-03-07T10:12:27Z</dcterms:modified></item><item><title>CSS: Overflow:hidden and position:relative</title><link>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!183.entry</link><description>&lt;p&gt;While writing an Ajax app that was supposed to collapse rows I came across this age old IE bug where the text on the cells I was laying out had relative positioning but were not cropped by the overflow hidden on their containing div. &lt;p&gt;I found this page useful &lt;p&gt;&lt;a title="http://www.brunildo.org/test/OverflowR.html" href="http://www.brunildo.org/test/OverflowR.html"&gt;http://www.brunildo.org/test/OverflowR.html&lt;/a&gt; &lt;p&gt;But what actually fixed it was simply adding position:relative onto the div that had the overflow:hidden.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-5885367650949873493&amp;page=RSS%3a+CSS%3a+Overflow%3ahidden+and+position%3arelative&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sartorial.spaces.live.com&amp;amp;GT1=sartorial"&gt;</description><comments>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!183.entry#comment</comments><guid isPermaLink="true">http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!183.entry</guid><pubDate>Wed, 05 Mar 2008 11:03:15 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sartorial.spaces.live.com/blog/cns!AE52F94DB08EC0AB!183/comments/feed.rss</wfw:commentRss><wfw:comment>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!183.entry#comment</wfw:comment><dcterms:modified>2008-03-05T11:03:15Z</dcterms:modified></item><item><title>EnableRedrawRegions</title><link>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!182.entry</link><description>&lt;p&gt;I haven't seen many performance problems but if I do, this looks like a useful tip: &lt;p&gt;&lt;a title="http://blogs.msdn.com/seema/archive/2007/10/07/perf-debugging-tips-enableredrawregions-a-performance-bug-in-videobrush.aspx" href="http://blogs.msdn.com/seema/archive/2007/10/07/perf-debugging-tips-enableredrawregions-a-performance-bug-in-videobrush.aspx"&gt;http://blogs.msdn.com/seema/archive/2007/10/07/perf-debugging-tips-enableredrawregions-a-performance-bug-in-videobrush.aspx&lt;/a&gt; &lt;p&gt;&amp;quot;For Perf debugging, a way to tell when you are causing a redraw is to turn on the control's &lt;em&gt;EnableRedrawRegions&lt;/em&gt; property.  &lt;p&gt;agControl.settings.EnableRedrawRegions = true; &lt;p&gt;With this feature on, when a section of the plugin causes a draw, that section will draw in a different color. This setting is not for those susceptible to seizures =P&amp;quot;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-5885367650949873493&amp;page=RSS%3a+EnableRedrawRegions&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sartorial.spaces.live.com&amp;amp;GT1=sartorial"&gt;</description><comments>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!182.entry#comment</comments><guid isPermaLink="true">http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!182.entry</guid><pubDate>Tue, 26 Feb 2008 18:04:36 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sartorial.spaces.live.com/blog/cns!AE52F94DB08EC0AB!182/comments/feed.rss</wfw:commentRss><wfw:comment>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!182.entry#comment</wfw:comment><dcterms:modified>2008-02-26T18:04:36Z</dcterms:modified></item><item><title>Visio to Xaml converter</title><link>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!181.entry</link><description>&lt;div&gt;Wow - just spotted this:&lt;/div&gt;
&lt;div&gt;&lt;a href="http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!2599.entry?wa=wsignin1.0"&gt;http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!2599.entry?wa=wsignin1.0&lt;/a&gt;&lt;/div&gt;
&lt;p style="background:white"&gt;&lt;span lang=EN-US style="font-size:8.5pt;color:#444444;font-family:'Verdana','sans-serif'"&gt;&amp;quot;I was excited to see &lt;a href="http://www.codeplex.com/VisioExportToXAML"&gt;&lt;u&gt;&lt;font color="#0000ff"&gt;VisioExportToXaml&lt;/font&gt;&lt;/u&gt;&lt;/a&gt; on Codeplex from Saveen Reddy (with credits to Thierry Bouquain and SharpVectors). &amp;quot;&lt;/span&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-5885367650949873493&amp;page=RSS%3a+Visio+to+Xaml+converter&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sartorial.spaces.live.com&amp;amp;GT1=sartorial"&gt;</description><comments>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!181.entry#comment</comments><guid isPermaLink="true">http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!181.entry</guid><pubDate>Fri, 08 Feb 2008 11:01:49 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sartorial.spaces.live.com/blog/cns!AE52F94DB08EC0AB!181/comments/feed.rss</wfw:commentRss><wfw:comment>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!181.entry#comment</wfw:comment><dcterms:modified>2008-02-08T11:01:49Z</dcterms:modified></item><item><title>Silverlight 1.1 Alpha Refresh cannot use the inplaceInstallPrompt</title><link>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!179.entry</link><description>&lt;p&gt;I hope someone finds this useful (at least until 2.0 Beta which I reckon will be out by &lt;a href="http://visitmix.com/2008/default.aspx"&gt;Mix '08&lt;/a&gt; in March), the Silverlight 1.1 Alpha Refresh does not appear to be able to use the &amp;quot;inplaceInstallPrompt&amp;quot; property.&lt;pre&gt;    Silverlight.createObjectEx({
        source: &lt;span style="color:rgb(163,21,21)"&gt;&amp;quot;Page.xaml&amp;quot;&lt;/span&gt;,
        parentElement: document.getElementById(&lt;span style="color:rgb(163,21,21)"&gt;&amp;quot;SilverlightControlHost&amp;quot;&lt;/span&gt;),
        id: controlID,
        properties: {
            width: &lt;span style="color:rgb(163,21,21)"&gt;&amp;quot;500&amp;quot;&lt;/span&gt;,
            height: &lt;span style="color:rgb(163,21,21)"&gt;&amp;quot;500&amp;quot;&lt;/span&gt;,
            version: &lt;span style="color:rgb(163,21,21)"&gt;&amp;quot;1.1&amp;quot;&lt;/span&gt;,
            enableHtmlAccess: &lt;span style="color:rgb(163,21,21)"&gt;&amp;quot;true&amp;quot;&lt;/span&gt;,
            inplaceInstallPrompt:&lt;span style="color:rgb(0,0,255)"&gt;true&lt;/span&gt; &lt;span style="color:rgb(0,128,0)"&gt;// &amp;lt;-- does not work
&lt;/span&gt;        },
        
        events: {onLoad: OnLoaded}
    });&lt;/pre&gt;
&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;Looking at the Silverlight.js, it overrides the setting by doing the following:
&lt;blockquote&gt;&lt;pre&gt;&lt;span style="color:rgb(0,0,255)"&gt;if&lt;/span&gt;(g.shortVer==&lt;span style="color:rgb(163,21,21)"&gt;&amp;quot;1.1&amp;quot;&lt;/span&gt;)g.inplaceInstallPrompt=&lt;span style="color:rgb(0,0,255)"&gt;false&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;I was surprised not to find any articles on the web about this but there are a lot of &lt;a href="http://weblogs.asp.net/mschwarz/archive/2007/07/31/upgrading-your-project-to-silverlight-alpha-1-1-refresh.aspx"&gt;misleading posts like this one&lt;/a&gt; (which not only suggests that it works but wraps the &lt;em&gt;true&lt;/em&gt; as a string which &lt;a href="http://geekswithblogs.net/dnoderer/archive/2007/12/11/review-silverlight-1.0-unleashed.aspx"&gt;doesn't work&lt;/a&gt; in 1.0).
&lt;p&gt;Also to get around my issue that createHostedObjectEx points to the wrong version of Silverlight (&lt;a href="http://silverlight.net/forums/t/7161.aspx"&gt;rumours are this will be fixed by MIX '08&lt;/a&gt;), I simply used javascript to redirect to another html page that was a cut-down version of my main page. It still loaded the same application but in the Silverlight onLoad it executed some more javascript to go back to the main page.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-5885367650949873493&amp;page=RSS%3a+Silverlight+1.1+Alpha+Refresh+cannot+use+the+inplaceInstallPrompt&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sartorial.spaces.live.com&amp;amp;GT1=sartorial"&gt;</description><comments>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!179.entry#comment</comments><guid isPermaLink="true">http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!179.entry</guid><pubDate>Tue, 29 Jan 2008 22:38:36 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sartorial.spaces.live.com/blog/cns!AE52F94DB08EC0AB!179/comments/feed.rss</wfw:commentRss><wfw:comment>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!179.entry#comment</wfw:comment><dcterms:modified>2008-01-29T22:40:39Z</dcterms:modified></item><item><title>Could not load file or assembly 'System.Data.DataSetExtensions, Version=2.0.0.0, ...</title><link>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!178.entry</link><description>&lt;p&gt;After upgrading from Visual Studio 2008 beta 2 to the RTM I got the following error: &lt;p&gt;Could not load file or assembly 'System.Data.DataSetExtensions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The system cannot find the file specified.  &lt;p&gt;&lt;a href="http://www.danielmoth.com/Blog/2007/11/could-not-load-file-or-assembly-in.html"&gt;Daniel Moth already figured this out&lt;/a&gt; last year.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-5885367650949873493&amp;page=RSS%3a+Could+not+load+file+or+assembly+'System.Data.DataSetExtensions%2c+Version%3d2.0.0.0%2c+...&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sartorial.spaces.live.com&amp;amp;GT1=sartorial"&gt;</description><comments>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!178.entry#comment</comments><guid isPermaLink="true">http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!178.entry</guid><pubDate>Mon, 14 Jan 2008 20:21:03 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sartorial.spaces.live.com/blog/cns!AE52F94DB08EC0AB!178/comments/feed.rss</wfw:commentRss><wfw:comment>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!178.entry#comment</wfw:comment><dcterms:modified>2008-01-14T20:21:03Z</dcterms:modified></item><item><title>Silverlight expiry August/November 2007</title><link>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!177.entry</link><description>&lt;div&gt;According to the current Terms and Conditions for the September 1.1 Alpha refresh, they will expire on 1st August (Mac) and 1st November (PC) 2007. This is &lt;strong&gt;not true&lt;/strong&gt;, I posted this question (via my psuedonym LittleClive :-)) to &lt;a href="http://silverlight.net/forums/p/8248/25757.aspx#25757"&gt;http://silverlight.net/forums/p/8248/25757.aspx#25757&lt;/a&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;See &lt;a href="http://www.microsoft.com/silverlight/license-mac-dev.aspx"&gt;http://www.microsoft.com/silverlight/license-mac-dev.aspx&lt;/a&gt; and &lt;a href="http://www.microsoft.com/silverlight/license-win-dev.aspx"&gt;http://www.microsoft.com/silverlight/license-win-dev.aspx&lt;/a&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-5885367650949873493&amp;page=RSS%3a+Silverlight+expiry+August%2fNovember+2007&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sartorial.spaces.live.com&amp;amp;GT1=sartorial"&gt;</description><category>Silverlight</category><comments>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!177.entry#comment</comments><guid isPermaLink="true">http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!177.entry</guid><pubDate>Wed, 09 Jan 2008 17:29:17 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sartorial.spaces.live.com/blog/cns!AE52F94DB08EC0AB!177/comments/feed.rss</wfw:commentRss><wfw:comment>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!177.entry#comment</wfw:comment><dcterms:modified>2008-01-09T17:29:17Z</dcterms:modified></item><item><title>Uploading photos to Photobox</title><link>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!176.entry</link><description>&lt;p&gt;I'm not trying to make money from my photos but wanted to give friends and family the opportunity to order photos if they wanted to so I've used the photobox FTP interface, a bespoke windows service, .NET remoting to retrieve the current upload status and a webservice to expose all this to the Silverlight app. &lt;p&gt;Here are some screenshots of the current ordering process: &lt;p&gt;&lt;a href="http://byfiles.storage.msn.com/y1pdW1r8S6EashzIMNlGpBU7JnWQ0YHaKCJA1MfJAvuWF5ubC7QDPFLy55Aor-IljVVlqax1-ROzt4?PARTNER=WRITER"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=181 alt="clip_image001" src="http://byfiles.storage.msn.com/y1pdW1r8S6EasixZqdI1c3G2HIsejR6wxE9rl463YJR953rwoQkUB1fZq_POvi0SppM2q8mjRv5mac?PARTNER=WRITER" width=244 border=0&gt;&lt;/a&gt; &lt;a href="http://byfiles.storage.msn.com/y1pdW1r8S6EasixcVcX2Im0laRRwhM8SHPMYuicpugfUpVLQu1Jpg56SAhgf0Z9ieDLNaJtk1g7GU0?PARTNER=WRITER"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=191 alt="clip_image002" src="http://byfiles.storage.msn.com/y1pdW1r8S6Easgj2BEVqiwyx_9VGLYykMUGa8BMDiX2xR7dlEd3YA-KycpMRGYx60XOnT5akoYxXKo?PARTNER=WRITER" width=244 border=0&gt;&lt;/a&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-5885367650949873493&amp;page=RSS%3a+Uploading+photos+to+Photobox&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sartorial.spaces.live.com&amp;amp;GT1=sartorial"&gt;</description><comments>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!176.entry#comment</comments><guid isPermaLink="true">http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!176.entry</guid><pubDate>Thu, 20 Dec 2007 11:49:12 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sartorial.spaces.live.com/blog/cns!AE52F94DB08EC0AB!176/comments/feed.rss</wfw:commentRss><wfw:comment>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!176.entry#comment</wfw:comment><dcterms:modified>2007-12-20T11:49:12Z</dcterms:modified></item><item><title>Silverlight 1.1 is now Silverlight 2.0!</title><link>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!171.entry</link><description>&lt;p&gt;It's official, Silverlight 1.1 is being rebranded 2.0 with a beta being released in Q1 of 2008. &lt;a href="http://weblogs.asp.net/scottgu/archive/2007/11/29/net-web-product-roadmap-asp-net-silverlight-iis7.aspx"&gt;According to Scott Guthrie&lt;/a&gt; this will come with a Go-Live license that &amp;quot;enables developers to begin building and deploying Silverlight 2.0 applications&amp;quot;.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-5885367650949873493&amp;page=RSS%3a+Silverlight+1.1+is+now+Silverlight+2.0!&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sartorial.spaces.live.com&amp;amp;GT1=sartorial"&gt;</description><comments>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!171.entry#comment</comments><guid isPermaLink="true">http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!171.entry</guid><pubDate>Thu, 20 Dec 2007 11:37:56 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sartorial.spaces.live.com/blog/cns!AE52F94DB08EC0AB!171/comments/feed.rss</wfw:commentRss><wfw:comment>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!171.entry#comment</wfw:comment><dcterms:modified>2007-12-20T11:37:56Z</dcterms:modified></item><item><title>Album art rendered in 3d</title><link>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!169.entry</link><description>&lt;p&gt;My app uses the Amazon web-services to search for album art and then uses &lt;a href="http://www.povray.org"&gt;POV-ray&lt;/a&gt; to create a 3D rendering of a &amp;quot;real&amp;quot; &lt;a href="http://runevision.com/3d/include/"&gt;CD&lt;/a&gt;. This is then shown when music is selected from the menus. Track listings show up and disappear when the mouse is over this image. Example is shown below: &lt;p&gt;&lt;a href="http://byfiles.storage.msn.com/y1pdW1r8S6Eashil5deQaiBj9cJmadTtHUzBytD_gcufJ-nWXvKJgCLTqI3BrmLiVwGKp5s8xidzWE?PARTNER=WRITER"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=379 alt=image src="http://byfiles.storage.msn.com/y1pdW1r8S6EasiFqT2mpIx94h8GEfL7HsqRS341P_ZiXJs6slZeXTzHlwN-RzkiieEUW3dTq8l7lDk?PARTNER=WRITER" width=466 border=0&gt;&lt;/a&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-5885367650949873493&amp;page=RSS%3a+Album+art+rendered+in+3d&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sartorial.spaces.live.com&amp;amp;GT1=sartorial"&gt;</description><comments>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!169.entry#comment</comments><guid isPermaLink="true">http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!169.entry</guid><pubDate>Thu, 06 Dec 2007 16:20:47 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sartorial.spaces.live.com/blog/cns!AE52F94DB08EC0AB!169/comments/feed.rss</wfw:commentRss><wfw:comment>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!169.entry#comment</wfw:comment><dcterms:modified>2007-12-06T16:20:47Z</dcterms:modified></item><item><title>HttpWebRequest.GetRequestStream() appeared to hang</title><link>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!166.entry</link><description>&lt;p&gt;After about two successful uploads to the Silverlight Streaming Servers, req.GetRequestStream() appeared to hang. Actually it was waiting for a free connection for 15 minutes (since that is what I had now set the timeout to) and couldn't get one. 
&lt;p&gt;I already made sure I was closing the streams I was explicitly using, i.e. 
&lt;blockquote&gt;&lt;pre&gt;&lt;span style="color:rgb(0,0,255)"&gt;using&lt;/span&gt; (&lt;span style="color:rgb(43,145,175)"&gt;Stream&lt;/span&gt; requestStream = req.GetRequestStream()) {...}&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;But I found I also needed to close the response even though I hadn't referred to it (unfortunately HttpWebRequest isn't disposable and doesn't have an overall close method): 
&lt;blockquote&gt;&lt;pre&gt;req.GetResponse().Close();&lt;/pre&gt;&lt;/blockquote&gt;&lt;pre&gt;I should really be checking the response though...&lt;/pre&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-5885367650949873493&amp;page=RSS%3a+HttpWebRequest.GetRequestStream()+appeared+to+hang&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sartorial.spaces.live.com&amp;amp;GT1=sartorial"&gt;</description><comments>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!166.entry#comment</comments><guid isPermaLink="true">http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!166.entry</guid><pubDate>Tue, 27 Nov 2007 23:31:23 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sartorial.spaces.live.com/blog/cns!AE52F94DB08EC0AB!166/comments/feed.rss</wfw:commentRss><wfw:comment>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!166.entry#comment</wfw:comment><dcterms:modified>2007-12-04T11:59:41Z</dcterms:modified></item><item><title>Silverlight raised events not reaching javascript/HTML page</title><link>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!165.entry</link><description>&lt;p&gt;One of the events in my Silverlight app did not appear to reach my HTML page. Turned out that I had lazily put an event handler in my Silverlight app as follows:&lt;pre&gt;      &lt;span style="color:rgb(0,0,255)"&gt;void&lt;/span&gt; buttonClose_Click(&lt;span style="color:rgb(0,0,255)"&gt;object&lt;/span&gt; sender, &lt;span style="color:rgb(43,145,175)"&gt;EventArgs&lt;/span&gt; e)
        {
            &lt;span style="color:rgb(0,0,255)"&gt;if&lt;/span&gt; (Close != &lt;span style="color:rgb(0,0,255)"&gt;null&lt;/span&gt;)
            {
                Close(&lt;span style="color:rgb(0,0,255)"&gt;this&lt;/span&gt;, e);
            }
        }&lt;/pre&gt;
&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;The problem being the event args that came through from the buttonClose event could not be passed to javascript. No errors were thrown to help me, but all was fine again by changing the code to:&lt;pre&gt;     &lt;span style="color:rgb(0,0,255)"&gt;void&lt;/span&gt; buttonClose_Click(&lt;span style="color:rgb(0,0,255)"&gt;object&lt;/span&gt; sender, &lt;span style="color:rgb(43,145,175)"&gt;EventArgs&lt;/span&gt; e)
        {
            &lt;span style="color:rgb(0,0,255)"&gt;if&lt;/span&gt; (Close != &lt;span style="color:rgb(0,0,255)"&gt;null&lt;/span&gt;)
            {
                &lt;strong&gt;&lt;em&gt;Close(&lt;span style="color:rgb(0,0,255)"&gt;this&lt;/span&gt;, &lt;span style="color:rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color:rgb(43,145,175)"&gt;EventArgs&lt;/span&gt;());&lt;/em&gt;
&lt;/strong&gt;            }
        }&lt;/pre&gt;&lt;pre&gt;&lt;font face="Trebuchet MS"&gt;Note that even &lt;strong&gt;&lt;em&gt;Close(&lt;span style="color:rgb(0,0,255)"&gt;this&lt;/span&gt;, null)&lt;/em&gt;&lt;/strong&gt; seemed to stop the event getting through.&lt;/font&gt;&lt;/pre&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-5885367650949873493&amp;page=RSS%3a+Silverlight+raised+events+not+reaching+javascript%2fHTML+page&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sartorial.spaces.live.com&amp;amp;GT1=sartorial"&gt;</description><comments>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!165.entry#comment</comments><guid isPermaLink="true">http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!165.entry</guid><pubDate>Sun, 25 Nov 2007 23:16:14 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sartorial.spaces.live.com/blog/cns!AE52F94DB08EC0AB!165/comments/feed.rss</wfw:commentRss><wfw:comment>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!165.entry#comment</wfw:comment><dcterms:modified>2007-11-25T23:16:14Z</dcterms:modified></item><item><title>15 minute upload timeout</title><link>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!162.entry</link><description>&lt;p&gt;I finally managed to get around the issue of .NET closing my socket before I'd finished with it. It was closing after 15 minutes as mentioned in my &lt;a href="http://sartorial.spaces.live.com/blog/cns!AE52F94DB08EC0AB!161.entry"&gt;previous post&lt;/a&gt;. Unfortunately it was all futile because the Silverlight Streaming Server closes the connection a few seconds later that results in the exception: &lt;p&gt;&lt;strong&gt;Unable to write data to the transport connection: An existing connection was forcibly closed by the remote host.&lt;/strong&gt; &lt;p&gt;Quite a bit of digging around on the silverlight.net forums showed &lt;a href="http://silverlight.net/forums/t/2993.aspx"&gt;this post&lt;/a&gt; which refers to the following info &lt;a href="http://msdn2.microsoft.com/en-us/library/bb851596.aspx"&gt;on MSDN&lt;/a&gt;: &lt;table cellspacing=0 cellpadding=2 width=400 border=1&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign=top width=398&gt; &lt;p&gt;&lt;strong&gt;How To: Upload an Application&lt;/strong&gt;  &lt;p&gt;This procedure describes how to upload a Silverlight-based application to the Silverlight Streaming server.  &lt;p&gt;&lt;b&gt;Important note:&lt;/b&gt;There are three upload limits to keep in mind:  &lt;ul&gt; &lt;li&gt;Any video file within the application archive: not bigger than 22 MB  &lt;li&gt;Application archive (ZIP with all application files and manifest): not bigger than 30 MB  &lt;li&gt;Overall Silverlight Streaming storage quota: 4 GB &lt;/ul&gt; &lt;p&gt;There is also a &lt;b&gt;15-minute timeout&lt;/b&gt; on upload. In case the upload process hangs or if the upload is taking longer than 15 minutes, it will timeout and fail.&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;Now I seem to be a bit stuck since:  &lt;ul&gt; &lt;li&gt;The application must be smaller than 30mb otherwise I can't upload it over my broadband connection  &lt;li&gt;Only a single application can be passed into the &lt;a href="http://msdn2.microsoft.com/en-us/library/bb802532.aspx"&gt;initParams&lt;/a&gt; of the createHostedObjectEx() call (at least this appears to be the case)  &lt;li&gt;You can't add files to an existing application, you have to replace the application&lt;/ul&gt; &lt;p&gt;So basically I seem to be limited to a 30mb zip file for any video I want to cache for my application. The only alternative I can see is to launch separate Silverlight applications for cached content.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-5885367650949873493&amp;page=RSS%3a+15+minute+upload+timeout&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sartorial.spaces.live.com&amp;amp;GT1=sartorial"&gt;</description><comments>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!162.entry#comment</comments><guid isPermaLink="true">http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!162.entry</guid><pubDate>Wed, 21 Nov 2007 00:19:11 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sartorial.spaces.live.com/blog/cns!AE52F94DB08EC0AB!162/comments/feed.rss</wfw:commentRss><wfw:comment>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!162.entry#comment</wfw:comment><dcterms:modified>2007-11-21T00:23:40Z</dcterms:modified></item><item><title>Uploading large files to the Silverlight Streaming Servers</title><link>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!161.entry</link><description>&lt;p&gt;I am trying to synchronize my most recent video content with the Silverlight Streaming Servers to give better performance for the newest content. &lt;p&gt;Using the &lt;a href="http://renaud91.free.fr/MetaDataExtractor/"&gt;EXIF&lt;/a&gt; information in the photos and the Canon .THM files I have calculated the date ranges that each of the photo/movie collections spans. Using the Silverlight Streaming Services &lt;a href="http://msdn2.microsoft.com/en-us/library/bb851616.aspx"&gt;REST API&lt;/a&gt; to interrogate the list of applications, remove stale entries and upload new video content. &lt;p&gt;The first issue whilst trying to upload a 140MB zip file was the following exception: &lt;p&gt;&lt;strong&gt;System.Net.WebException: The request was aborted: The request was canceled.&lt;/strong&gt; &lt;p&gt;This occurred around 90 seconds into the upload (about 4.5MB had uploaded). To work around this I set the HttpWebRequest &lt;em&gt;Timeout&lt;/em&gt; and &lt;em&gt;ReadWriteTimeout&lt;/em&gt; properties to -1. &lt;p&gt;I am now getting the following error after about 30MB has uploaded: &lt;p&gt;&lt;strong&gt;Unable to write data to the transport connection: An established connection was aborted by the software in your host machine.&lt;/strong&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-5885367650949873493&amp;page=RSS%3a+Uploading+large+files+to+the+Silverlight+Streaming+Servers&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sartorial.spaces.live.com&amp;amp;GT1=sartorial"&gt;</description><comments>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!161.entry#comment</comments><guid isPermaLink="true">http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!161.entry</guid><pubDate>Mon, 19 Nov 2007 13:56:22 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sartorial.spaces.live.com/blog/cns!AE52F94DB08EC0AB!161/comments/feed.rss</wfw:commentRss><wfw:comment>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!161.entry#comment</wfw:comment><dcterms:modified>2007-11-19T13:56:22Z</dcterms:modified></item><item><title>Screenshots</title><link>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!156.entry</link><description>&lt;p&gt;Some screenshots of how it's progressing so far... &lt;p&gt;1) Intro movie that I created using &lt;a href="http://www.povray.org"&gt;povray&lt;/a&gt;. This movie I've hosted on the &lt;a href="http://silverlight.live.com/"&gt;Silverlight Streaming servers&lt;/a&gt;. Piles of photos on the left depict the categories, bigger piles represent larger categories. &lt;p&gt;&lt;a href="http://byfiles.storage.msn.com/y1pdW1r8S6EashIBwpA17Ay2sEHn3BbrYjK9ozwpWBXGrRfwDbnkiaZihXW9dYhUArFq48_8LIYWQY?PARTNER=WRITER"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=222 alt=Intro src="http://byfiles.storage.msn.com/y1pdW1r8S6EasgKsqORE9fxOzgR63whPTC0PV3VmRjz5eeoF_2staQC4Ifkhli0gzLMno_RZPu8DEk?PARTNER=WRITER" width=383 border=0&gt;&lt;/a&gt;  &lt;p&gt;2) As you drill down the menus on the left, the icon and label animate to the breadcrumb at the top. I might use the now blank space to show more thumbnails. The tabs at the bottom show Photos, Movies and Order. This order category has been a bit tacked on but it does work and allows a selection of photos to be uploaded to &lt;a href="http://www.photobox.co.uk/"&gt;photobox&lt;/a&gt;. &lt;p&gt;Full size images use a bit of &lt;a href="http://www.silverlight.net/QuickStarts/Dom/ManagedCodeAccess.aspx"&gt;[Scriptable]&lt;/a&gt; magic to use html to launch a popup containing the full size image. Toggle quality switches between bit-rates for movies (I used WMV9 Advanced Profile to create the VC-1 movies) so this button is currently a bit misplaced on the photo page. &lt;p&gt; &lt;a href="http://byfiles.storage.msn.com/y1pdW1r8S6Easgfs98xEvE3c7_tDWi5HAnpKBoKUfNGsqDB4XUtmg8X3kScs84gFimqFKek04BVX5M?PARTNER=WRITER"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=287 alt="drilldown_image" src="http://byfiles.storage.msn.com/y1pdW1r8S6Easivhf-EWydkr9NJ_VzSSGhcJT4hhGxmzAolhZL6xrP0yGJG6Ct3iI8826DBDwWb_LU?PARTNER=WRITER" width=359 border=0&gt;&lt;/a&gt;  &lt;p&gt;3) A large spinning progress cog is used to indicate any progress like buffering and loading the menus (I'll probably regret this at some point but it's an iterative process). &lt;p&gt;&lt;a href="http://byfiles.storage.msn.com/y1pdW1r8S6EasgHuyY7Sc6v9BlRjgFKi0Y24zKkAtREWucS2fHBDkY5wcgX5Y_mysqXA7O6Eg9wWGk?PARTNER=WRITER"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=307 alt=progress src="http://byfiles.storage.msn.com/y1pdW1r8S6EasgHI5XF1lSc_91hgIMWHSUnDZZV0QzrzCysdlKS1bN7RfFpd75t5VteDkgAJ5RuSLw?PARTNER=WRITER" width=366 border=0&gt;&lt;/a&gt; &lt;p&gt;I wrote a Windows Service to poll for new orders and since this is a lightweight site I've used a &lt;a href="http://msdn2.microsoft.com/en-us/library/system.runtime.remoting.wellknownservicetypeentry.aspx"&gt;remoting singleton&lt;/a&gt; to report on the current state of the upload so that feedback can be given to the user. This singleton is then exposed by a web-service, which is in turn polled by the Silverlight app.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-5885367650949873493&amp;page=RSS%3a+Screenshots&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sartorial.spaces.live.com&amp;amp;GT1=sartorial"&gt;</description><comments>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!156.entry#comment</comments><guid isPermaLink="true">http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!156.entry</guid><pubDate>Fri, 09 Nov 2007 23:23:54 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sartorial.spaces.live.com/blog/cns!AE52F94DB08EC0AB!156/comments/feed.rss</wfw:commentRss><wfw:comment>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!156.entry#comment</wfw:comment><dcterms:modified>2007-11-09T23:23:54Z</dcterms:modified></item><item><title>Wrong version of Silverlight installed</title><link>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!149.entry</link><description>&lt;p&gt;When users don't have Silverlight 1.1, they get prompted to install 1.0 which results in a loop of going back to the page only to get told they need Silverlight. &lt;p&gt;It appears the version of Silverlight.js in the SDK is incorrect and people have been tweaking it to fix it (see &lt;a href="http://www.wintellect.com/cs/blogs/jprosise/archive/2007/08/08/lessons-learned-visual-studio-2008-and-silverlight-1-1.aspx"&gt;hacked Silverlight.js&lt;/a&gt;). I haven't tried this yet but I am currently hosting content on the Silverlight Streaming Servers and therefore have used the &lt;a href="http://msdn2.microsoft.com/en-us/library/bb851591.aspx"&gt;Silverlight Streaming specific Silverlight.js&lt;/a&gt; from  &lt;p&gt;&lt;a href="http://agappdom.net/h/silverlight.js"&gt;http://agappdom.net/h/silverlight.js&lt;/a&gt; &lt;p&gt;This script seems to be 1.0 specific so if the user doesn't have Silverlight, it tries to get them to install 1.0. Maybe I'll have to write my own detection....&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-5885367650949873493&amp;page=RSS%3a+Wrong+version+of+Silverlight+installed&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sartorial.spaces.live.com&amp;amp;GT1=sartorial"&gt;</description><comments>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!149.entry#comment</comments><guid isPermaLink="true">http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!149.entry</guid><pubDate>Fri, 09 Nov 2007 10:31:05 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sartorial.spaces.live.com/blog/cns!AE52F94DB08EC0AB!149/comments/feed.rss</wfw:commentRss><wfw:comment>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!149.entry#comment</wfw:comment><dcterms:modified>2007-11-09T10:31:05Z</dcterms:modified></item><item><title>Asynchronous web-service calls from Silverlight</title><link>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!132.entry</link><description>&lt;p&gt;Following on from &lt;a href="http://sartorial.spaces.live.com/blog/cns!AE52F94DB08EC0AB!126.entry"&gt;not being able to make webservice calls on non-UI thread&lt;/a&gt;, asynchronous calls can be made via the BeginXXX/EndXXX methods in the generated proxy as long as they are initiated on the UI thread. &lt;p&gt;The check is done in the BrowserHttpWebRequest constructor so a bit of &lt;a href="http://www.aisto.com/roeder/dotnet/"&gt;Lutz&lt;/a&gt;-ing on System.Silverlight.dll reveals that the constructor is called before the method is asynchronously invoked and hence works as long as the BeginXXX method is called on the UI thread. &lt;p&gt;Based on all this and a bit of refactoring, my progress animation now plays whilst I make a number of paged web-service calls to gradually populate the navigation controls.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-5885367650949873493&amp;page=RSS%3a+Asynchronous+web-service+calls+from+Silverlight&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sartorial.spaces.live.com&amp;amp;GT1=sartorial"&gt;</description><comments>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!132.entry#comment</comments><guid isPermaLink="true">http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!132.entry</guid><pubDate>Wed, 10 Oct 2007 13:12:04 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sartorial.spaces.live.com/blog/cns!AE52F94DB08EC0AB!132/comments/feed.rss</wfw:commentRss><wfw:comment>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!132.entry#comment</wfw:comment><dcterms:modified>2007-10-10T13:12:04Z</dcterms:modified></item><item><title>This operation can only occur on the UI Thread</title><link>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!126.entry</link><description>&lt;p&gt;So to avoid the JSON serialization length limit mentioned in a &lt;a href="http://sartorial.spaces.live.com/blog/cns!AE52F94DB08EC0AB!118.entry"&gt;previous post&lt;/a&gt;, I have created a separate LoadMenuPage method that takes a menu file and a page number. The total number of pages is returned in the first LoadMenu call. At the moment, my client application loads all of the menus and merges them together into a single menu so the result is the same but this can take some time. The menus have to be limited to 10 menu items per web-service call and since there are 84 items in one of the menus, this requires 9 calls plus merge time. &lt;p&gt;I wanted to give some feedback to the user about this long running application so I tried starting an animation before the long call and then hiding it afterwards. This didn't work because the long running call was executing on the UI thread so I moved the web-service invocation and merging logic to another thread. When it completes, it needs to populate a UI control which it can't do if it's not on the UI thread and there's no Dispatcher in Silverlight yet. So I created a custom dispatcher using the HtmlTimer (which is marked obsolete but from research seems to be the only choice at the moment):&lt;pre&gt;    &lt;span style="color:rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color:rgb(0,0,255)"&gt;class&lt;/span&gt; &lt;span style="color:rgb(43,145,175)"&gt;CustomDispatcher
&lt;/span&gt;    {
        &lt;span style="color:rgb(0,0,255)"&gt;private&lt;/span&gt; &lt;span style="color:rgb(43,145,175)"&gt;Queue&lt;/span&gt;&amp;lt;&lt;span style="color:rgb(43,145,175)"&gt;Delegate&lt;/span&gt;&amp;gt; uiWork = &lt;span style="color:rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color:rgb(43,145,175)"&gt;Queue&lt;/span&gt;&amp;lt;&lt;span style="color:rgb(43,145,175)"&gt;Delegate&lt;/span&gt;&amp;gt;();
        &lt;span style="color:rgb(0,0,255)"&gt;private&lt;/span&gt; &lt;span style="color:rgb(43,145,175)"&gt;HtmlTimer&lt;/span&gt; timer = &lt;span style="color:rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color:rgb(43,145,175)"&gt;HtmlTimer&lt;/span&gt;();

        &lt;span style="color:rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color:rgb(0,0,255)"&gt;void&lt;/span&gt; Start()
        {
            timer.Start();
        }

        &lt;span style="color:rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color:rgb(0,0,255)"&gt;void&lt;/span&gt; InvokeOnUIThread(&lt;span style="color:rgb(43,145,175)"&gt;Delegate&lt;/span&gt; d)
        {
            uiWork.Enqueue(d);
        }

        &lt;span style="color:rgb(0,0,255)"&gt;private&lt;/span&gt; &lt;span style="color:rgb(0,0,255)"&gt;void&lt;/span&gt; OnTick(&lt;span style="color:rgb(0,0,255)"&gt;object&lt;/span&gt; sender, &lt;span style="color:rgb(43,145,175)"&gt;EventArgs&lt;/span&gt; args)        
        {
            &lt;span style="color:rgb(0,0,255)"&gt;if&lt;/span&gt; (uiWork.Count &amp;gt; 0)
            {
                &lt;span style="color:rgb(43,145,175)"&gt;Delegate&lt;/span&gt; d = uiWork.Dequeue();
                d.Method.Invoke(d.Target, &lt;span style="color:rgb(0,0,255)"&gt;null&lt;/span&gt;);
            }
        }

        &lt;span style="color:rgb(0,0,255)"&gt;public&lt;/span&gt; CustomDispatcher()        
        {
            timer.Interval = 100; 
            timer.Tick += &lt;span style="color:rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color:rgb(43,145,175)"&gt;EventHandler&lt;/span&gt;(OnTick);
        }
    }&lt;/pre&gt;
&lt;p&gt;So all is looking good-ish, but then I hit another wall when I ran it up because I got the error I had been trying to avoid &amp;quot;This operation can only occur on the UI Thread&amp;quot;:&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;&lt;a href="http://by1.storage.msn.com/y1psdPtLQi_yahrsAvzMJebYhbP0EwPzgVC4uct2WsLY0VOObyk4hGlXO8n2vxlN9GLBG7bslbWVJz-1jfuqCWtV0UToEd2CySx?PARTNER=WRITER"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=251 alt=UIThreadError src="http://by1.storage.msn.com/y1psdPtLQi_yagtYby1J0Q5cZ_gRE2HuOzUp_7MuO3HgeMTl1WtMa0JUCc3T5ue21N2s4GC9nX72MBu9M-Q1JIVD_IiavfXP618?PARTNER=WRITER" width=384 border=0&gt;&lt;/a&gt; 
&lt;p&gt;It seems the web-service proxy code requires an internal call to System.Windows.Browser.HtmlPage.get_DocumentUri() which needs to be executed on the UI thread. I haven't tried the asynchronous BeginLoad in the proxy yet...&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-5885367650949873493&amp;page=RSS%3a+This+operation+can+only+occur+on+the+UI+Thread&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sartorial.spaces.live.com&amp;amp;GT1=sartorial"&gt;</description><category>Silverlight</category><comments>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!126.entry#comment</comments><guid isPermaLink="true">http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!126.entry</guid><pubDate>Thu, 04 Oct 2007 11:27:31 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sartorial.spaces.live.com/blog/cns!AE52F94DB08EC0AB!126/comments/feed.rss</wfw:commentRss><wfw:comment>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!126.entry#comment</wfw:comment><dcterms:modified>2007-10-07T20:44:34Z</dcterms:modified></item><item><title>Fixing the Silverlight 1.1 SDK Alpha controls</title><link>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!120.entry</link><description>&lt;p&gt;It's great that the source code is provided for these controls. I've had to fix the ListBox so that it scrolls back to the top when UpdateItems is called, otherwise the canvas can appear empty when drilling down through menus:  &lt;p&gt; &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;pre&gt;        &lt;span style="color:rgb(0,128,0)"&gt;//Updates the content children with the current items in the list
&lt;/span&gt;        &lt;span style="color:rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color:rgb(0,0,255)"&gt;void&lt;/span&gt; UpdateItems()
        {
            &lt;span style="color:rgb(0,128,0)"&gt;//remove all the children and start from empty
&lt;/span&gt;            content.Children.Clear();

            &lt;strong&gt;&lt;em&gt;content.SetValue(&lt;span style="color:rgb(43,145,175)"&gt;Canvas&lt;/span&gt;.TopProperty, 0);&lt;/em&gt;&lt;/strong&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;I've also had to fix the list box so that after scrolling it doesn't select content if you release the mouse button inside the content area which has greatly reduced the number of mis-selections:&lt;pre&gt;&lt;strong&gt;&lt;em&gt;        &lt;span style="color:rgb(128,128,128)"&gt;///&lt;/span&gt;&lt;span style="color:rgb(0,128,0)"&gt; &lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="color:rgb(128,128,128)"&gt;&amp;lt;summary&amp;gt;
&lt;/span&gt;        &lt;span style="color:rgb(128,128,128)"&gt;///&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="color:rgb(0,128,0)"&gt; Keep track of where mouse was originally pressed
&lt;/span&gt;        &lt;span style="color:rgb(128,128,128)"&gt;///&lt;/span&gt;&lt;span style="color:rgb(0,128,0)"&gt; &lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="color:rgb(128,128,128)"&gt;&amp;lt;/summary&amp;gt;
&lt;/span&gt;        &lt;span style="color:rgb(0,0,255)"&gt;private&lt;/span&gt; &lt;span style="color:rgb(0,0,255)"&gt;bool&lt;/span&gt; mouseDownInsideContentArea;&lt;/em&gt;&lt;/strong&gt;

        &lt;span style="color:rgb(0,128,0)"&gt;// CaptureMouse
&lt;/span&gt;        &lt;span style="color:rgb(0,0,255)"&gt;protected&lt;/span&gt; &lt;span style="color:rgb(0,0,255)"&gt;void&lt;/span&gt; OnMouseLeftButtonDown(&lt;span style="color:rgb(0,0,255)"&gt;object&lt;/span&gt; sender, &lt;span style="color:rgb(43,145,175)"&gt;MouseEventArgs&lt;/span&gt; args)
        {
            &lt;span style="color:rgb(0,0,255)"&gt;if&lt;/span&gt; (CheckMousePosition(args))
            {
                ActualControl.CaptureMouse();
&lt;strong&gt;&lt;em&gt;                mouseDownInsideContentArea = &lt;span style="color:rgb(0,0,255)"&gt;true&lt;/span&gt;;&lt;/em&gt;&lt;/strong&gt;
            }
            &lt;span style="color:rgb(0,0,255)"&gt;else
&lt;/span&gt;            {
&lt;strong&gt;&lt;em&gt;                mouseDownInsideContentArea = &lt;span style="color:rgb(0,0,255)"&gt;false&lt;/span&gt;;&lt;/em&gt;&lt;/strong&gt;
            }
        }

        &lt;span style="color:rgb(0,128,0)"&gt;// If the mouse is on the ListBox find on which item and select it.
&lt;/span&gt;        &lt;span style="color:rgb(0,0,255)"&gt;protected&lt;/span&gt; &lt;span style="color:rgb(0,0,255)"&gt;void&lt;/span&gt; OnMouseLeftButtonUp(&lt;span style="color:rgb(0,0,255)"&gt;object&lt;/span&gt; sender, &lt;span style="color:rgb(43,145,175)"&gt;MouseEventArgs&lt;/span&gt; args)
        {
            ActualControl.ReleaseMouseCapture();

            &lt;span style="color:rgb(0,128,0)"&gt;//do thing only if we are outside the ScrollBar [Simon Ransom: and the mouse was originally pressed when not on scroll bar]
&lt;/span&gt;&lt;strong&gt;&lt;em&gt;            &lt;span style="color:rgb(0,0,255)"&gt;if&lt;/span&gt; (CheckMousePosition(args) &amp;amp;&amp;amp; mouseDownInsideContentArea) {&lt;/em&gt;&lt;/strong&gt;
                &lt;span style="color:rgb(43,145,175)"&gt;Point&lt;/span&gt; pt = args.GetPosition(&lt;span style="color:rgb(0,0,255)"&gt;this&lt;/span&gt;);
                &lt;span style="color:rgb(0,0,255)"&gt;if&lt;/span&gt; ((items.Count &amp;gt; 0) &amp;amp;&amp;amp;
                    (pt.X &amp;lt; Width) &amp;amp;&amp;amp; (pt.Y &amp;lt; Height)) {
                    &lt;span style="color:rgb(0,0,255)"&gt;double&lt;/span&gt; contentY = pt.Y - (&lt;span style="color:rgb(0,0,255)"&gt;double&lt;/span&gt;)(content.GetValue(&lt;span style="color:rgb(43,145,175)"&gt;Canvas&lt;/span&gt;.TopProperty));
                    &lt;span style="color:rgb(0,0,255)"&gt;int&lt;/span&gt; itemNumber = (&lt;span style="color:rgb(0,0,255)"&gt;int&lt;/span&gt;)(contentY / itemHeight);
                    &lt;span style="color:rgb(43,145,175)"&gt;FrameworkElement&lt;/span&gt; newSelection = itemNumber &amp;lt; items.Count ? items[itemNumber] : &lt;span style="color:rgb(0,0,255)"&gt;null&lt;/span&gt;;
                    &lt;span style="color:rgb(0,0,255)"&gt;if&lt;/span&gt; (selectedItem != newSelection) {
                        Select(newSelection);
                        &lt;span style="color:rgb(0,0,255)"&gt;if&lt;/span&gt; (SelectionChanged != &lt;span style="color:rgb(0,0,255)"&gt;null&lt;/span&gt;) {
                            SelectionChanged(&lt;span style="color:rgb(0,0,255)"&gt;this&lt;/span&gt;, &lt;span style="color:rgb(0,0,255)"&gt;null&lt;/span&gt;);
                        }
                    }
                }
            }
        }&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-5885367650949873493&amp;page=RSS%3a+Fixing+the+Silverlight+1.1+SDK+Alpha+controls&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sartorial.spaces.live.com&amp;amp;GT1=sartorial"&gt;</description><category>Silverlight</category><comments>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!120.entry#comment</comments><guid isPermaLink="true">http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!120.entry</guid><pubDate>Thu, 04 Oct 2007 06:57:43 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sartorial.spaces.live.com/blog/cns!AE52F94DB08EC0AB!120/comments/feed.rss</wfw:commentRss><wfw:comment>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!120.entry#comment</wfw:comment><dcterms:modified>2007-10-04T06:57:43Z</dcterms:modified></item><item><title>JSON serialization and "Error invoking service."</title><link>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!118.entry</link><description>&lt;div&gt;To serve up my menu XML files which I already have .NET serialization classes for, I've created a webservice:&lt;/div&gt;&lt;font size=2&gt;&lt;font size=2&gt;
&lt;p&gt;[&lt;/font&gt;&lt;font color="#2b91af" size=2&gt;WebService&lt;/font&gt;&lt;font size=2&gt;(Namespace = &lt;/font&gt;&lt;font color="#a31515" size=2&gt;&amp;quot;http://www.simonransom.com/menuservice/3.0&amp;quot;&lt;/font&gt;&lt;font size=2&gt;)]
&lt;p&gt;[&lt;/font&gt;&lt;font color="#2b91af" size=2&gt;WebServiceBinding&lt;/font&gt;&lt;font size=2&gt;(ConformsTo = &lt;/font&gt;&lt;font color="#2b91af" size=2&gt;WsiProfiles&lt;/font&gt;&lt;font size=2&gt;.BasicProfile1_1)]
&lt;p&gt;[&lt;/font&gt;&lt;font color="#2b91af" size=2&gt;ToolboxItem&lt;/font&gt;&lt;font size=2&gt;(&lt;/font&gt;&lt;font color="#0000ff" size=2&gt;false&lt;/font&gt;&lt;font size=2&gt;)]&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;[System.Web.Script.Services.&lt;/font&gt;&lt;font color="#2b91af" size=2&gt;ScriptService&lt;/font&gt;&lt;font size=2&gt;]
&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color="#0000ff" size=2&gt;class&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color="#2b91af" size=2&gt;MenuService&lt;/font&gt;&lt;font size=2&gt; : System.Web.Services.&lt;/font&gt;&lt;font color="#2b91af" size=2&gt;WebService&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;{ 
&lt;p&gt;    [&lt;/font&gt;&lt;font color="#2b91af" size=2&gt;WebMethod&lt;/font&gt;&lt;font size=2&gt;]
&lt;p&gt;    [&lt;/font&gt;&lt;font color="#2b91af" size=2&gt;ScriptMethod&lt;/font&gt;&lt;font size=2&gt;(ResponseFormat = &lt;/font&gt;&lt;font color="#2b91af" size=2&gt;ResponseFormat&lt;/font&gt;&lt;font size=2&gt;.Json)]
&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size=2&gt;&lt;font color="#000000"&gt;    &lt;/font&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color="#2b91af" size=2&gt;SegmentedMenu&lt;/font&gt;&lt;font size=2&gt; Load(&lt;/font&gt;&lt;font color="#0000ff" size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; menu)
&lt;p&gt;    {
&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size=2&gt;    &lt;font color="#000000"&gt;    &lt;/font&gt;string&lt;/font&gt;&lt;font size=2&gt; path = Server.MapPath(&lt;/font&gt;&lt;font color="#a31515" size=2&gt;&amp;quot;~/menufiles/&amp;quot;&lt;/font&gt;&lt;font size=2&gt; + menu);&lt;/font&gt;&lt;font size=2&gt;
&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size=2&gt;&lt;font color="#000000"&gt;    &lt;/font&gt;    return&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color="#0000ff" size=2&gt;new&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color="#2b91af" size=2&gt;SegmentedMenu&lt;/font&gt;&lt;font size=2&gt;(&lt;/font&gt;&lt;font color="#2b91af" size=2&gt;MenuManager&lt;/font&gt;&lt;font size=2&gt;.GetInstance().Load(path));
&lt;p&gt;    }
&lt;p&gt;}
&lt;p&gt;From this I learnt a few things:
&lt;ul&gt;
&lt;li&gt;If I went to the webservice page menuService.asmx in Internet Explorer or Firefox, the browser would only return the XML version of the results which looked fine (as long as you were expecting XML - which given that I'd specified &lt;a href="http://www.json.org/"&gt;Json &lt;/a&gt;serialization I wasn't)
&lt;li&gt;Using &lt;a href="http://www.pocketsoap.com/tcpTrace/"&gt;TCPTrace&lt;/a&gt; from Simon Fell &amp;amp; Matt Humphrey, the message requests from Silverlight were of the more expected form and have a MIME Content-Type of application/json&lt;/ul&gt;
&lt;p&gt;     &lt;strong&gt;{&amp;quot;menu&amp;quot;:&amp;quot;publicphotos.xml&amp;quot;}&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;So it looks like .NET is supporting both serialization forms depending on the client request type. The response back to Silverlight from my webservice is in the form:&lt;/ul&gt;
&lt;blockquote dir=ltr style="margin-right:0px"&gt;
&lt;p&gt;&lt;strong&gt;{&amp;quot;d&amp;quot;:{&amp;quot;__type&amp;quot;:&amp;quot;PBL.App.Menus.WebService.SegmentedMenu&amp;quot;,&amp;quot;Header&amp;quot;:{&amp;quot;MenuLargeImage&amp;quot;:null,&amp;quot;Filename&amp;quot;:&amp;quot;publicphotos.xml&amp;quot;,&amp;quot;AudioPlaylist&amp;quot;:null,&amp;quot;A&lt;em&gt;... etc.&lt;/em&gt;&lt;/strong&gt;&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;For some of the menus I get a System.Net.WebException with a message stating &amp;quot;Error invoking service.&amp;quot; (not particularly helpful and no inner exception). However in TCPTrace I get a more helpful: &lt;/ul&gt;
&lt;p&gt;     {&amp;quot;Message&amp;quot;:&amp;quot;&lt;strong&gt;Error during serialization or deserialization using the JSON JavaScriptSerializer. The length of the string exceeds the value set on the maxJsonLength property&lt;/strong&gt;.&amp;quot;,&amp;quot;StackTrace&amp;quot;:&amp;quot;   at System.Web.Script.Services.RestHandler.InvokeMethod(HttpContext context, WebServiceMethodData methodData, IDictionary`2 rawParams)\r\n   at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)&amp;quot;,&amp;quot;ExceptionType&amp;quot;:&amp;quot;System.InvalidOperationException&amp;quot;}
&lt;ul&gt;
&lt;li&gt;My original menu serialization used inheritance and &lt;font size=2&gt;System.Xml.Serialization.&lt;/font&gt;&lt;font color="#2b91af" size=2&gt;XmlInclude &lt;font color="#000000"&gt;to have a base MenuItem and subclasses of MenuItemPhoto, MenuItemMovie, etc. however although the XML looked ok, the JSON serialization format does not support OO inheritance so all the classes on the client end were stripped down to the base class MenuItem. To work around this, I created a SegmentedMenu class which could be created based on the original Menu class but separated each of the MenuItems into different lists (e.g. List&amp;lt;MenuItemPhoto&amp;gt; photos) depending on class type. This could then be passed back but loses the benefit of interleaving different types and increases a mapping overhead but overall not a bad solution for what I need.&lt;/font&gt;&lt;/font&gt;&lt;/ul&gt;
&lt;p&gt;So now I need to work out how make the larger menus smaller or increase the &lt;strong&gt;maxJasonLength&lt;/strong&gt; property.&lt;/font&gt;&lt;/font&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-5885367650949873493&amp;page=RSS%3a+JSON+serialization+and+%22Error+invoking+service.%22&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sartorial.spaces.live.com&amp;amp;GT1=sartorial"&gt;</description><category>Silverlight</category><comments>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!118.entry#comment</comments><guid isPermaLink="true">http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!118.entry</guid><pubDate>Tue, 02 Oct 2007 19:17:43 GMT</pubDate><slash:comments>3</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sartorial.spaces.live.com/blog/cns!AE52F94DB08EC0AB!118/comments/feed.rss</wfw:commentRss><wfw:comment>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!118.entry#comment</wfw:comment><dcterms:modified>2007-10-02T19:18:13Z</dcterms:modified></item><item><title>Week 1-ish</title><link>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!117.entry</link><description>&lt;div&gt;Downloaded:&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=b98a61ba-99b0-40b7-ab6e-5386a2b94217&amp;amp;DisplayLang=en"&gt;Visual Studio 2008 Beta 2&lt;/a&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=B52AEB39-1F10-49A6-85FC-A0A19CAC99AF&amp;amp;displaylang=en"&gt;Microsoft Silverlight Tools Alpha for Visual Studio 2008 Beta 2&lt;/a&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=54b85d84-604d-43db-bcfe-7afd278208d8&amp;amp;DisplayLang=en"&gt;Silverlight 1.1 Alpha SDK&lt;/a&gt; (includes some basic controls like button, listbox etc.)
&lt;li&gt;&lt;a href="http://www.microsoft.com/expression/products/download.aspx?key=blend2preview"&gt;Blend 2 September Preview&lt;/a&gt;&lt;/ul&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-5885367650949873493&amp;page=RSS%3a+Week+1-ish&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sartorial.spaces.live.com&amp;amp;GT1=sartorial"&gt;</description><category>Silverlight</category><comments>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!117.entry#comment</comments><guid isPermaLink="true">http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!117.entry</guid><pubDate>Fri, 28 Sep 2007 13:51:03 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sartorial.spaces.live.com/blog/cns!AE52F94DB08EC0AB!117/comments/feed.rss</wfw:commentRss><wfw:comment>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!117.entry#comment</wfw:comment><dcterms:modified>2007-10-02T19:18:36Z</dcterms:modified></item><item><title>The beginnings of my photo/video browser</title><link>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!116.entry</link><description>&lt;div&gt;I'm learning Silverlight and for my &amp;quot;hello world&amp;quot; app I've chosen to reimplement my family photo, video and music site. So I keep track of what I'm learning I'll blog it here.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Firstly the &amp;quot;legacy&amp;quot; system I have already built in .NET 2.0 at a high-level creates xml menu files for driving the navigation on the website.&lt;/div&gt;
&lt;p&gt;It has a number of plugins to
&lt;ul&gt;
&lt;ul&gt;
&lt;li&gt;extract Exif information
&lt;li&gt;create thumbnails, playlists, web preview images
&lt;li&gt;create movie files in Divx, Wmv (standard and VC-1) and Quicktime formats
&lt;li&gt;render 3d artwork using Povray (e.g. piles of photos that are bigger depending on the size of the category)
&lt;li&gt;extract stills from movies to create animated thumbnails
&lt;li&gt;uses Amazon webservice to search for album art and then screenscrape the images to produce a 3d view of the CD case&lt;/ul&gt;&lt;/ul&gt;
&lt;p&gt;This system is separate from the website itself so that I could easily move away from ASP.NET to an alternative interface and that's exactly what I'm doing now....&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-5885367650949873493&amp;page=RSS%3a+The+beginnings+of+my+photo%2fvideo+browser&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=sartorial.spaces.live.com&amp;amp;GT1=sartorial"&gt;</description><category>Silverlight</category><comments>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!116.entry#comment</comments><guid isPermaLink="true">http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!116.entry</guid><pubDate>Fri, 28 Sep 2007 13:40:49 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://sartorial.spaces.live.com/blog/cns!AE52F94DB08EC0AB!116/comments/feed.rss</wfw:commentRss><wfw:comment>http://sartorial.spaces.live.com/Blog/cns!AE52F94DB08EC0AB!116.entry#comment</wfw:comment><dcterms:modified>2007-09-28T13:40:49Z</dcterms:modified></item></channel></rss>