<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" version="2.0"><channel><title>&amp;lt;ChristophDotNet </title><link>http://weblogs.asp.net/cschittko/default.aspx</link><description>desc="My angle on brackets" /&gt;</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/CTheArchitect" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item><title>Silverlight 3 for Kiosk Apps? Of Course!</title><link>http://weblogs.asp.net/cschittko/archive/2009/11/17/silverlight-3-for-kiosk-apps-of-course.aspx</link><pubDate>Tue, 17 Nov 2009 15:48:36 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7258041</guid><dc:creator>ChristophDotNet</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/cschittko/rsscomments.aspx?PostID=7258041</wfw:commentRss><wfw:comment>http://weblogs.asp.net/cschittko/commentapi.aspx?PostID=7258041</wfw:comment><comments>http://weblogs.asp.net/cschittko/archive/2009/11/17/silverlight-3-for-kiosk-apps-of-course.aspx#comments</comments><description>&lt;p&gt;Several of the customers I work with are looking to build kiosk or point-of-sale applications with &lt;a href="http://www.silverlight.net"&gt;Silverlight&lt;/a&gt;. The ease of deployment with browser-based Silverlight applications is definitely appealing. Sharing applications or components between customers’ kiosks and web sites is another appealing reasons to go with Silverlight. This post outlines the architecture decisions between Silverlight and WPF and presents architecture options for Silverlight based solutions. A follow up post will discuss the Silverlight implementation details. &lt;/p&gt;  &lt;p&gt;However, POS systems or kiosks often need integration with local peripherals, such as credit card readers, barcode scanners, printers, etc. Since Silverlight browser applications run in a sandbox access to these devices isn’t immediately available. Therefore we need to find a way to insert a bridge between the peripherals and the Silverlight application to read data from the devices and forward the data to the Silverlight app. &lt;/p&gt;  &lt;p&gt;To get started, let’s look at applications that can communicate with local peripherals. Desktop applications can communicate with local devices. Devices usually ship with C++ or .NET libraries to read data or sink events from devices. Therefore Desktop applications are usually preferred for POS systems. Microsoft has a &lt;a href="http://msdn.microsoft.com/en-us/library/ms828083.aspx"&gt;POS for .NET framework&lt;/a&gt; to simplify development of applications that need access to a wide array of peripherals. WPF offers a very compelling option to build the application UI and building the UI in WPF is a great step to share assets between the kiosk and the Web. The following table summarizes the decision points to decide between a full desktop application or a Silverlight app.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;   &lt;table border="0" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="200"&gt;           &lt;p&gt;&lt;strong&gt;Pro&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="200"&gt;           &lt;p&gt;&lt;strong&gt;Con&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="200"&gt;           &lt;p&gt;Full POS Framework for peripheral integration&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="200"&gt;           &lt;p&gt;Requires high-touch deployment&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="200"&gt;           &lt;p&gt;Full access to local resources (files, registry, printers, peripherals)&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="200"&gt;           &lt;p&gt;Some re-development to share assets between desktop and web applications&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="200"&gt;           &lt;p&gt;Hardware accelerated graphics&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="200"&gt;           &lt;p&gt;Windows specific&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="200"&gt;           &lt;p&gt;Richest Graphics with WPF and XNA&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="200"&gt;&amp;#160;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="200"&gt;           &lt;p&gt;Full .NET Framework (WCF, WPF, WF, SxS versioning, …)&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="200"&gt;&amp;#160;&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;If the cons weigh too high and you really need a browser-based app, for example when you’re running in shared kiosk environments or if ease of deployment is much more important than peripheral integration, then you have a couple of options with Silverlight. &lt;/p&gt;  &lt;p&gt;First, you can simply load the Silverlight application with a control hosted in a desktop application via the &lt;a href="http://msdn.microsoft.com/en-us/library/cc296246(VS.95).aspx"&gt;COM hosting interfaces&lt;/a&gt;. The host application can &lt;a href="http://msdn.microsoft.com/en-us/library/cc296246(VS.95).aspx#IXcpControl_put_Source"&gt;load the Silverlight application&lt;/a&gt; from a web URL, i.e. once you install the host application, you can still download the Silverlight application from the web. The Silverlight hosting interfaces even allow managing the download process, customize caching of .xap files and other resources through the &lt;a href="http://msdn.microsoft.com/en-us/library/cc296246(VS.95).aspx#IXcpControlHost2"&gt;IXcpControlHost interface&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;For communication between the Silverlight app and the device manager running in the host application, the Silverlight application can expose an interface via the scriptable object bridge. That bridge is intended for communicating with the javascript engine of a web browser but it works in other containers as well. The scriptable object is accessible to the Win32 host via COM &lt;a href="http://msdn.microsoft.com/en-us/library/ms221608.aspx"&gt;IDispatch&lt;/a&gt; interfaces, which the host application can invoke to send data to the embedded Silverlight application as shown in the diagram below. &lt;/p&gt;  &lt;p&gt;&lt;a href="file:///C:\Users\cschittk\AppData\Local\Temp\WindowsLiveWriter-429641856\supfiles3B4929C5\clip_image002%5b4%5d.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="clip_image001" border="0" alt="clip_image001" src="http://weblogs.asp.net/blogs/cschittko/clip_image001_7142BA76.gif" width="269" height="475" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You may at this point decide that the custom host is all you need, but may also want to run the application in a browser, for example because the Silverlight application integrates with an existing web site or you need to comply with an industry standard like &lt;a href="http://en.wikipedia.org/wiki/Common_Use_Self_Service"&gt;CUSS&lt;/a&gt;.    &lt;table border="0" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="200"&gt;           &lt;p&gt;&lt;strong&gt;Pro&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="200"&gt;           &lt;p&gt;&lt;strong&gt;Con&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="200"&gt;           &lt;p&gt;Single Process solution&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="200"&gt;           &lt;p&gt;Non-standard,&amp;#160; Windows-only container&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="200"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="top" width="200"&gt;           &lt;p&gt;Need to re-develop browser functionality, such as caching&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="200"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="top" width="200"&gt;           &lt;p&gt;Tight coupling of peripheral management and application UI&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;In the past, applications installed a &lt;a href="http://msdn.microsoft.com/en-us/magazine/cc188791.aspx"&gt;local web server like Cassini&lt;/a&gt; which hosted a .NET component that would communicate with local resources as needed. The Silverlight application would make REST calls to the “web server” which would handle the communication with a peripheral device or other local resources. &lt;/p&gt;  &lt;p&gt;&lt;a href="file:///C:\Users\cschittk\AppData\Local\Temp\WindowsLiveWriter-429641856\supfiles3B4929C5\clip_image004%5b4%5d.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://weblogs.asp.net/blogs/cschittko/clip_image002_41C425DD.gif" width="575" height="410" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;However, this approach had a couple of drawbacks. First, running a local web server requires administrator privileges and is often frowned upon because of potential security risks. Second, communication always had to be initiated by the Silverlight application. The peripheral could not send notifications to the application running in the browser.   &lt;table border="0" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="200"&gt;           &lt;p&gt;&lt;strong&gt;Pro&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="200"&gt;           &lt;p&gt;&lt;strong&gt;Con&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="200"&gt;           &lt;p&gt;Potentially fully managed code implementation&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="200"&gt;           &lt;p&gt;Complexity running a local web server&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="200"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="top" width="200"&gt;           &lt;p&gt;Communication overhead with HTTP&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="200"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="top" width="200"&gt;           &lt;p&gt;One-way communication. Silverlight application has to poll/&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="200"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="top" width="200"&gt;           &lt;p&gt;Policy restrictions for local services and sockets&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="200"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="top" width="200"&gt;           &lt;p&gt;Perceived security risks of local web servers&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="200"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="top" width="200"&gt;           &lt;p&gt;Complex deployment of local services&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;With Silverlight 3 we have an alternative that doesn’t require a local “web server”. Silverlight 3 introduced the ability for Silverlight applications to communicate regardless what application container they are running in. One Silverlight application would send messages over a “named channel” with a &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.messaging.localmessagesender%28VS.95%29.aspx"&gt;LocalMessageSender&lt;/a&gt; object. Another Silverlight application can listen on that named channel with a &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.messaging.localmessagereceiver%28VS.95%29.aspx"&gt;LocalMessageReceiver&lt;/a&gt; object. &lt;/p&gt;  &lt;p&gt;In our case the Win32 application could be an application without a visible UI that only acts as a bridge between the peripherals and the browser application. &lt;/p&gt;  &lt;p&gt;&lt;a href="file:///C:\Users\cschittk\AppData\Local\Temp\WindowsLiveWriter-429641856\supfiles3B4929C5\clip_image006%5b4%5d.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="clip_image003" border="0" alt="clip_image003" src="http://weblogs.asp.net/blogs/cschittko/clip_image003_48477FA0.gif" width="572" height="405" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In a scenario where the need for a local peripherals is limited to a single, well-known device, the effort to write a C++ host and communicate with the device in unmanaged code isn’t a daunting task. More sophisticated POS solutions may require more than one peripheral type. They may even require supporting different device configurations, i.e. bar code readers from different vendors. These types of POS applications typically require POS abstraction frameworks like &lt;a href="http://msdn.microsoft.com/en-us/library/ms828083.aspx"&gt;POS for .NET&lt;/a&gt;. However, in that case the host application could be either a managed C++ application with C++ code to implement the COM host for the Silverlight “bridge” application and .NET code to manage peripheral interaction.    &lt;table border="0" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="200"&gt;           &lt;p&gt;&lt;strong&gt;Pro&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="200"&gt;           &lt;p&gt;&lt;strong&gt;Con&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="200"&gt;           &lt;p&gt;Loose coupling between peripheral management and UI&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="200"&gt;           &lt;p&gt;Local deployment of peripheral management application required&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="200"&gt;           &lt;p&gt;Shareable bridge&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="200"&gt;           &lt;p&gt;More complex architecture with two applications&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;To close with some food for thought, there may be a completely browser based alternative that I haven’t tested out yet. Instead of running a Silverlight bridge in a separate Win32 application you could try to build a C++ ActiveX control to host the Silverlight “bridge” and the native device interaction code. This approach presents some security challenges that can be mitigated, but you still have to deal with the perceptions of pushing down an ActiveX control. &lt;/p&gt;  &lt;p&gt;&lt;a href="file:///C:\Users\cschittk\AppData\Local\Temp\WindowsLiveWriter-429641856\supfiles3B4929C5\clip_image008%5b6%5d.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://weblogs.asp.net/blogs/cschittko/clip_image004_64288ECB.gif" width="542" height="409" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You do have the benefits of clean separation between a cross-platform application that run on any platform that supports Silverlight and the platform specific extensions that need to manage interaction with local peripherals. You also have the benefit of a fully browser-based deployment model.   &lt;table border="0" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="200"&gt;           &lt;p&gt;&lt;strong&gt;Pro&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="200"&gt;           &lt;p&gt;&lt;strong&gt;Con&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="200"&gt;           &lt;p&gt;Fully browser-based deployment model&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="200"&gt;           &lt;p&gt;Native code development of ActiveX control&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="200"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="top" width="200"&gt;           &lt;p&gt;Policies for secure ActiveX execution required to avoid security risks&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7258041" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/cschittko/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/cschittko/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://weblogs.asp.net/cschittko/archive/tags/WPF/default.aspx">WPF</category></item><item><title>WcfTestClient with Windows Azure</title><link>http://weblogs.asp.net/cschittko/archive/2009/10/30/wcftestclient-with-windows-azure.aspx</link><pubDate>Fri, 30 Oct 2009 16:25:13 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7243336</guid><dc:creator>ChristophDotNet</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://weblogs.asp.net/cschittko/rsscomments.aspx?PostID=7243336</wfw:commentRss><wfw:comment>http://weblogs.asp.net/cschittko/commentapi.aspx?PostID=7243336</wfw:comment><comments>http://weblogs.asp.net/cschittko/archive/2009/10/30/wcftestclient-with-windows-azure.aspx#comments</comments><description>&lt;p&gt;One of my customers is working on an Azure WCF service. When wanted to test the service with &lt;a href="http://msdn.microsoft.com/en-us/library/bb552364.aspx"&gt;WcfTestClient&lt;/a&gt;, but we ran into some issues. We started the dev fabric and had the WebRole running on port 81. When we went to the WCF service metadata page at &lt;a href="http://mybox:5101/ProdKService.svc?wsdl"&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;http://mybox:5101/ProdKService.svc&lt;/span&gt;&lt;/a&gt;, we got the expected web page, which states:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;To test this service, you will need to create a client and use it to call the service. You can do this using the svcutil.exe tool from the command line with the following syntax:&lt;/p&gt;    &lt;div style="border-bottom: #f0f0e0 1pt solid; border-left: #f0f0e0 1pt solid; padding-bottom: 4pt; padding-left: 4pt; padding-right: 4pt; background: #e5e5cc; border-top: #f0f0e0 1pt solid; border-right: #f0f0e0 1pt solid; padding-top: 4pt; mso-element: para-border-div; mso-border-alt: solid #f0f0e0 .75pt"&gt;     &lt;p style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; line-height: normal; padding-left: 0in; padding-right: 0in; margin-bottom: 0pt; background: #e5e5cc; border-top: medium none; border-right: medium none; padding-top: 0in; mso-border-alt: solid #f0f0e0 .75pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt; mso-padding-alt: 4.0pt 4.0pt 4.0pt 4.0pt" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;svcutil.exe &lt;/span&gt;&lt;a href="http://mybox:5101/ProdKService.svc?wsdl"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;http://mybox:5101/ProdKService.svc?wsdl&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;         &lt;p&gt;&lt;/p&gt;       &lt;/span&gt;&lt;/p&gt;      &lt;br /&gt;&lt;/div&gt;    &lt;p&gt;This will generate a configuration file and a code file that contains the client class. Add the two files to your client application and use the generated client class to call the Service. &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Note that the instructions point you to port 5101 in the service URL. That’s the port where the &lt;em&gt;Azure instance&lt;/em&gt; is running in my local development fabric. It is not as we would expect the address of the Azure dev fabric which is running on port 81. We tried to follow the instructions and point WcfTestClient to the address on the page, but instead of testing the service, we got this not so friendly error message:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Error: &lt;strong&gt;Cannot obtain Metadata&lt;/strong&gt; from http://mybox:5101/ProdKService.svc If this is a Windows (R) Communication Foundation service to which you have access,&lt;strong&gt; please check that you have enabled metadata publishing at the specified address&lt;/strong&gt;. For help enabling metadata publishing, please refer to the MSDN documentation at http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata Exchange Error URI: http://mybox:5101/ProdKService.svc Metadata contains a reference that cannot be resolved: 'http://mybox:5101/ProdKService.svc'. There was no endpoint listening at http://mybox:5101/ProdKService.svc that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details. The remote server returned an error: (400) Bad Request.HTTP GET Error URI: http://mybox:5101/ProdKService.svc There was an error downloading 'http://mybox:5101/ProdKService.svc'. The request failed with HTTP status 400: Bad Request.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Now this is weird. We know that metadata publishing is enabled, because we got the instructions for the WSDL address from the metadata page in the first place.&lt;/p&gt;  &lt;p&gt;If you look at the address line in the browser when the Azure dev fabric launches, you note that the local fabric is listening on localhost port 81, not mybox port 5101. localhost is IP address 127.0.0.1, whereas mybox is bound to the IP address on my corporate network. . Is instructed, we tried to get the WSDL with &lt;a href="http://127.0.0.1:81/ProdKService.svc?wsdl"&gt;http://127.0.0.1:81/ProdKService.svc?wsdl&lt;/a&gt; and we’re getting a different error in in WcfTestClient:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p class="MsoNormal"&gt;Error: &lt;strong&gt;Cannot obtain Metadata from http://mybox:5101/ProdKService.svc&lt;/strong&gt; If this is a Windows (R) Communication Foundation service to which you have access, please check that you have enabled metadata publishing at the specified address.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;For help enabling metadata publishing, please refer to the MSDN documentation at http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata Exchange Error&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;URI: http://mybox:5101/ProdKService.svc&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;Metadata contains a reference that cannot be resolved: 'http://mybox:5101/ProdKService.svc'.&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Could not connect to http://mybox:5101/ProdKService.svc&lt;/span&gt;. TCP error code 10061: No connection could be made because the target machine actively refused it 127.0.0.1:5101.&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Unable to connect to the remote server&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;No connection could be made because the target machine actively refused it 127.0.0.1:5101HTTP GET Error&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;URI: http://mybox:5101/ProdKService.svc&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;There was an error downloading 'http://mybox:5101/ProdKService.svc'.&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Unable to connect to the remote server&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;No connection could be made because the target machine actively refused it 127.0.0.1:5101&lt;/p&gt; &lt;/blockquote&gt;  &lt;p class="MsoNormal"&gt;   &lt;p&gt;It took a little bit to figure this one out since the error message is so similar to the first one. The difference is only in the InnerException and you have to look at the WSDL at &lt;a href="http://mybox:5101/ProdKService.svc?wsdl"&gt;&lt;span style="font-family: &amp;#39;Courier New&amp;#39;; font-size: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;http://mybox:5101/ProdKService.svc?wsdl&lt;/span&gt;&lt;/a&gt;to understand the error. &lt;/p&gt; &lt;/p&gt;  &lt;p&gt;The culprit for this error is the schemaLocation reference in the WSDL:&lt;/p&gt;  &lt;p&gt;&amp;lt;xsd:import schemaLocation=&amp;quot;&lt;b&gt;http://mybox:5101/ProdKService.svc?xsd=xsd0&lt;/b&gt;&amp;quot; namespace=&amp;quot;&lt;b&gt;http://tempuri.org/&lt;/b&gt;&amp;quot; /&amp;gt;&lt;/p&gt;  &lt;p&gt;Even though we retrieved the WSDL from the localhost address, the WSDL generator in WCF generates a reference to the other network address.&lt;/p&gt;  &lt;p&gt;Since there’s no easy way to configure the Metadata generator in WCF to switch the hostname for the schemaLocation, I added the hostname to my C:\Windows\System32\drivers\etc\hosts &lt;/p&gt;  &lt;p&gt;127.0.0.1 mybox&lt;/p&gt;  &lt;p&gt;After restarting the Azure dev fabric, WcfTestClient was able to read the MEX metadata for the service. &lt;/p&gt;  &lt;p&gt;I also tried another work-around since not everybody modifying the hosts file may not be possible (although you also need admin rights for running the dev fabric). There is still &lt;a href="http://blogs.thinktecture.com/cweyer"&gt;Christian&lt;/a&gt;’s old &lt;a href="http://blogs.thinktecture.com/cweyer/archive/2007/05/10/414840.aspx"&gt;FlatWsdl&lt;/a&gt; trick.&lt;/p&gt;  &lt;p&gt;Adding the FlatWsdl extension and configuring the ServiceHost Factory in the Services’ s .svc file got WcfTestClient to work, too.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7243336" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/cschittko/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/cschittko/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://weblogs.asp.net/cschittko/archive/tags/Azure/default.aspx">Azure</category><category domain="http://weblogs.asp.net/cschittko/archive/tags/WCF/default.aspx">WCF</category></item><item><title>Need Help Migrating to SQL Azure?</title><link>http://weblogs.asp.net/cschittko/archive/2009/10/20/need-help-migrating-to-sql-azure.aspx</link><pubDate>Tue, 20 Oct 2009 21:47:21 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7234200</guid><dc:creator>ChristophDotNet</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/cschittko/rsscomments.aspx?PostID=7234200</wfw:commentRss><wfw:comment>http://weblogs.asp.net/cschittko/commentapi.aspx?PostID=7234200</wfw:comment><comments>http://weblogs.asp.net/cschittko/archive/2009/10/20/need-help-migrating-to-sql-azure.aspx#comments</comments><description>&lt;p&gt;Migrating an existing SQL Server database to &lt;a href="http://msdn.microsoft.com/en-us/library/ee336279.aspx"&gt;SQL Azure&lt;/a&gt; is a compelling story, but it’s not a trivial task … unless you start with the SQL Azure migration wizard put together by my team mates &lt;a href="http://www.facebook.com/people/George-Huey/1551153966"&gt;George&lt;/a&gt; and &lt;a href="http://blog.wadewegner.com"&gt;Wade&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;They just updated the wizard to support &lt;a href="http://blogs.msdn.com/ssds/archive/2009/10/14/9907238.aspx"&gt;SQL Azure CTP 2&lt;/a&gt;. Details at: &lt;a href="http://blog.wadewegner.com/index.php/2009/10/15/the-sql-azure-migration-wizard-will-now-migrate-your-data/"&gt;http://blog.wadewegner.com/index.php/2009/10/15/the-sql-azure-migration-wizard-will-now-migrate-your-data/&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7234200" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/cschittko/archive/tags/Azure/default.aspx">Azure</category></item><item><title>WinMo App Store Questions? I got answers</title><link>http://weblogs.asp.net/cschittko/archive/2009/10/05/winmo-app-store-questions-i-got-answers.aspx</link><pubDate>Mon, 05 Oct 2009 18:09:37 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7223731</guid><dc:creator>ChristophDotNet</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/cschittko/rsscomments.aspx?PostID=7223731</wfw:commentRss><wfw:comment>http://weblogs.asp.net/cschittko/commentapi.aspx?PostID=7223731</wfw:comment><comments>http://weblogs.asp.net/cschittko/archive/2009/10/05/winmo-app-store-questions-i-got-answers.aspx#comments</comments><description>&lt;p&gt;The Windows Mobile app store is about to launch. The team launched a number of videos on the &lt;a href="http://www.youtube.com/user/WindowsMobileDev"&gt;Windows Mobile Dev Channel on YouTube&lt;/a&gt; to walk you through the submission process for your application, but as I’m working with the team over at &lt;a href="http://www.tripcase.com"&gt;TripCase&lt;/a&gt;, we had a few more questions that we got answered over the past weeks. I thought they worth sharing:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Q: My app runs on Windows Phone Standard (i.e. SmartPhone, SP, no-touch) and Windows Phone Professional (Pocket PC, PPC, with touch screen). The application is packaged in a single cab file. The AppStore submission UI doesn’t let me select both platforms. How do I make sure I reach both groups of users&lt;/p&gt;  &lt;p&gt;A: Submit the app twice. Once for Standard, once for Professional. You can submit with the same name.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Q: I want to make an update to my application to fix a bug or a spelling error, change the description, etc. What do I do?&lt;/p&gt;  &lt;p&gt;A: Fix your cab, don’t change the version number of the application. Re-submit – it’s free.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Q: I’m getting an error: Unable to enable shim engine on device when running the AppVerifier. Help! How do I fix this?&lt;/p&gt;  &lt;p&gt;A: Most commonly, the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=40B7CEDB-DC8B-4503-8DC9-E75F8E8496C1&amp;amp;displaylang=en"&gt;Windows CE 5.0 Test Kit&lt;/a&gt; is missing on your machine or you haven’t replaced the libraries as outlined in the release docs. &lt;b&gt;Replace the Application verifier binaries in the processor folder for the device type. For example, replace C:\Program Files\Windows CE platform builder\5.00\CEPB\wcetk\DDTK\ARMV4I with C:\Program Files\Application Verifier for Mobile 5.0\Armv4i.      &lt;br /&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;If you’re testing with retail devices, then you also need to sign Privileged Certificate. Make sure your app meets the &lt;a href="http://blogs.msdn.com/windowsmobile/articles/248967.aspx"&gt;requirements&lt;/a&gt; for the cert.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;     &lt;br /&gt;&lt;/b&gt;Steve has more &lt;a href="http://blogs.msdn.com/hegenderfer/archive/2009/08/24/application-verifier-tip-enableshimengine.aspx"&gt;details&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Q: Do my customers need to install .NET CF Versions that my application needs?&lt;/p&gt;  &lt;p&gt;A: No. The Marketplace client takes care of installing the required version of the Compact Framework.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Q: I want to distribute my application through other channels than the Windows Mobile Marketplace. Can I distribute the certified and signed cab from Marketplace?&lt;/p&gt;  &lt;p&gt;A: No: You need to sign the &lt;a href="http://msdn.microsoft.com/en-us/windowsmobile/dd569931.aspx"&gt;cab with your own certificate&lt;/a&gt;. Applications signed with the Marketplace certificate can only be distributed from Marketplace.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Looking forward lots of cool WinMo apps on Marketplace.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7223731" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/cschittko/archive/tags/Windows+Mobile/default.aspx">Windows Mobile</category></item><item><title>Win7 Multi-touch. Why wait until WPF4?</title><link>http://weblogs.asp.net/cschittko/archive/2009/09/23/win7-multi-touch-why-wait-until-wpf4.aspx</link><pubDate>Wed, 23 Sep 2009 13:30:23 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7214865</guid><dc:creator>ChristophDotNet</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/cschittko/rsscomments.aspx?PostID=7214865</wfw:commentRss><wfw:comment>http://weblogs.asp.net/cschittko/commentapi.aspx?PostID=7214865</wfw:comment><comments>http://weblogs.asp.net/cschittko/archive/2009/09/23/win7-multi-touch-why-wait-until-wpf4.aspx#comments</comments><description>&lt;p&gt;WPF 4 is going to fully integrate Win 7’s multi-touch capabilities. with Windows 7 being RTM, you don’t have to wait for WPF 4 to be released for developing multi-touch demos. You can get started today with the &lt;a href="http://msdn.microsoft.com/en-us/library/dd562197(VS.85).aspx"&gt;native Win7 APIs&lt;/a&gt;, or with the &lt;a href="http://code.msdn.microsoft.com/WindowsTouch"&gt;WindowsTouch&lt;/a&gt; library for .NET 3.5SP1. The .NET library is much easier to work with since the native APIs are rather low level and based on the existing tablet APIs.&lt;/p&gt;  &lt;p&gt;Check out the link to the Win 7 .NET Interop Sample or the Channel9 video: &lt;a href="http://channel9.msdn.com/shows/Continuum/MultitouchLibraryWin7/"&gt;http://channel9.msdn.com/shows/Continuum/MultitouchLibraryWin7/&lt;/a&gt;.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/socaldevgal"&gt;Lynn&lt;/a&gt;’s blog post discusses the question on multi-touch with .NET 3.5 or 4.0: &lt;a href="http://blogs.msdn.com/socaldevgal/archive/2009/06/15/socaldevgal-wishes-to-decide-net-3-5-or-net-4-0-for-windows-7-multi-touch-application-development.aspx"&gt;http://blogs.msdn.com/socaldevgal/archive/2009/06/15/socaldevgal-wishes-to-decide-net-3-5-or-net-4-0-for-windows-7-multi-touch-application-development.aspx&lt;/a&gt;. It’s got more useful links to multi-touch development on Win7 resources as well.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;At least until WPF4 ships, there is a viable option to build production apps with multi-touch. There are some differences how WindowsTouch and WPF4 implement things, and you’re probably encountering a little bit of re-work, but both options are based on WPF and most of your UI and you code-behind should stay the same and you learn the &lt;a href="http://msdn.microsoft.com/en-us/library/cc872774.aspx"&gt;UI Design Guidelines for Touch&lt;/a&gt; right away.&lt;/p&gt;  &lt;p&gt;Enjoy.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7214865" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/cschittko/archive/tags/Tablet+PC/default.aspx">Tablet PC</category><category domain="http://weblogs.asp.net/cschittko/archive/tags/WPF/default.aspx">WPF</category><category domain="http://weblogs.asp.net/cschittko/archive/tags/Windows+7/default.aspx">Windows 7</category></item><item><title>Seadragon Mobile for the iPhone</title><link>http://weblogs.asp.net/cschittko/archive/2008/12/14/seadragon-mobile-for-the-iphone.aspx</link><pubDate>Sun, 14 Dec 2008 18:46:25 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6784557</guid><dc:creator>ChristophDotNet</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/cschittko/rsscomments.aspx?PostID=6784557</wfw:commentRss><wfw:comment>http://weblogs.asp.net/cschittko/commentapi.aspx?PostID=6784557</wfw:comment><comments>http://weblogs.asp.net/cschittko/archive/2008/12/14/seadragon-mobile-for-the-iphone.aspx#comments</comments><description>&lt;p&gt;The iPhone always reminds me of &lt;a href="http://www.moviesoundclips.net/movies1/findingnemo/pledge.mp3"&gt;Finding Nemo (iPhones, they think they’re so cute. Oh, look at me, I’m a flicky little iPhone, let me flick for you. )&lt;/a&gt;. Yesterday, Bill Crow from &lt;a href="http://www.livelabs.com"&gt;Live Labs&lt;/a&gt; just &lt;a href="http://livelabs.com/blog/seadragon-goes-mobile/"&gt;posted&lt;/a&gt; about an app that makes the iPhone even cooler – and yes, it’s from Microsoft! That’s the coolest part of it&lt;/p&gt;  &lt;p&gt;If you have an iPhone, then check it out. DeepZoom is one of the best features in Silverlight 2 that’s behind the &lt;a href="http://www.hardrock.com/memorabilia"&gt;Hard Rock Cafe Memorabilia app&lt;/a&gt; or my &lt;a href="http://silverlight.services.live.com/invoke/71954/innovation2/iframe.html"&gt;Innovation Tips &amp;amp; Tricks “Deck”&lt;/a&gt; and now &lt;a href="http://www.itunes.com/app/seadragonmobile"&gt;SeaDragon Mobile&lt;/a&gt; is available for free on the iPhone, too&lt;/p&gt;  &lt;p&gt;And for those of you that' don’t have an iPhone and don’t run Silverlight. You can now run &lt;a href="http://livelabs.com/seadragon-ajax/"&gt;SeaDragon Ajax&lt;/a&gt;, purely browser based, without an add-on.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6784557" width="1" height="1"&gt;</description></item><item><title>Resolving Errors - Moving to Silverlight2 RTW</title><link>http://weblogs.asp.net/cschittko/archive/2008/10/12/resolving-errors-moving-to-silverlight2-rtw.aspx</link><pubDate>Sun, 12 Oct 2008 21:16:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6675235</guid><dc:creator>ChristophDotNet</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://weblogs.asp.net/cschittko/rsscomments.aspx?PostID=6675235</wfw:commentRss><wfw:comment>http://weblogs.asp.net/cschittko/commentapi.aspx?PostID=6675235</wfw:comment><comments>http://weblogs.asp.net/cschittko/archive/2008/10/12/resolving-errors-moving-to-silverlight2-rtw.aspx#comments</comments><description>&lt;p&gt;Following Jesse’s and &lt;a href="http://community.irritatedvowel.com/blogs/pete_browns_blog/archive/2008/09/26/Silverlight-2-RC0-_1320_-Developer_2D00_Only-RTW-Prep-Release.aspx"&gt;Pete’s&lt;/a&gt; excellent posts on porting Silverlight2 apps from Beta 2 to the final release bits I thought I add just a little more information. &lt;/p&gt;  &lt;p&gt;As I worked with one of my customers that’s featured in the launch press release through their code, I thought it would be nice to understand the error you’re getting as you port. &lt;/p&gt;  &lt;h3&gt;1. The new app type. This is a &lt;a href="http://blogs.msdn.com/webnext/archive/2008/10/09/why-don-t-beta-2-sites-work-on-rc0-question-of-the-day.aspx"&gt;well documented first step&lt;/a&gt; you need to take to see more than the “download silverlight” badge.&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/cschittko/image_45A56D57.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/cschittko/image_thumb_530B805D.png" width="244" height="84" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;div&gt;The fix is easy. Change the &amp;lt;object&amp;gt; tag from&lt;/div&gt;  &lt;div&gt;&amp;#160;&lt;/div&gt;  &lt;div&gt;   &lt;div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;     &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;lt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; &lt;strong&gt;data=&lt;span style="color: #006080"&gt;&amp;quot;data:application/x-silverlight,&amp;quot;&lt;/span&gt;&lt;/strong&gt; type=&lt;span style="color: #006080"&gt;&amp;quot;&lt;strong&gt;application/x-silverlight-2-b2&lt;/strong&gt;&amp;quot; …&lt;/span&gt;&amp;gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;to&lt;/p&gt;

&lt;div&gt;
  &lt;div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;
    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;lt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; &lt;strong&gt;data=&lt;span style="color: #006080"&gt;&amp;quot;data:application/x-silverlight-2,&amp;quot;&lt;/span&gt; type=&lt;span style="color: #006080"&gt;&amp;quot;application/x-silverlight-2&amp;quot;&lt;/span&gt;&lt;/strong&gt; … &amp;gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;2. Fix your references to the vsm namespace (xmlns:vsm=&amp;quot;clr-namespace:System.Windows;assembly=System.Windows&amp;quot;)&lt;/h3&gt;

&lt;p&gt;Those result in XamlParseException with error code AG_E_RUNTIME_MANAGED_UNKNOWN_ERROR. Curiously enough those exceptions occur on the LoadComponent call that’s loading and parsing Xaml from the .xap (as &lt;a href="http://www.silverlightshow.net/items/Reading-Silverlight-Embedded-XAML.aspx"&gt;explained by Shawn&lt;/a&gt;), but the exception details don’t give you much details what you need to get rid of them. For example, your code may reference the vsm namespace in the Application.Resources element in the App.xaml:&lt;/p&gt;

&lt;div&gt;
  &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;lt;vsm:Application.Resources&amp;gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;If that’s the case,&amp;#160; the exception will occur when parsing the first child of &amp;lt;vsm:Application.Resources&amp;gt;. In my case, that was the line with the closing tag of a ContentPresenter (which has other issues (see below)). Unfortunately, that inconsistency is not caught by the Xaml validator in Visual Studio. Simply changing the Application.Resources element to:&lt;/p&gt;

&lt;div&gt;
  &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;lt;Application.Resources&amp;gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;will get rid of this exception.&lt;/p&gt;

&lt;h3&gt;3. The next class of errors is another XamlParseException with the error code: AG_E_PARSER_PROPERTY_NOT_FOUND.&lt;/h3&gt;

&lt;p&gt;The culprit is again the namespace reference to the System.Windows namespace, often referenced with the vsm prefix. Again, you will see this exception not on the element that’s actually causing the problem. In my case it was again &amp;lt;/ContentPresenter&amp;gt;.&lt;/p&gt;

&lt;p&gt;Search and Replace of vsm:Setter and vsm:Setter.Value with the “Entire Solution” option gets rid of these errors pretty quickly. While you’re at it, replace vsm:Style with Style.&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://weblogs.asp.net/blogs/cschittko/image_3DADCAF5.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/cschittko/image_thumb_236D61D1.png" width="264" height="426" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;h3&gt;4. ScrollViewer and other ContentControl derived classes no longer have Text* properties. &lt;/h3&gt;

&lt;p&gt;You’ll get validation errors when the parameters are set explicitly in code, but you get a XamlParseException: Invalid attribute value TextAlignment for property Property.&lt;/p&gt;

&lt;p&gt;when you define a Style that would set TextAlignment and TextWrapping properties. &lt;/p&gt;

&lt;div&gt;
  &lt;div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;
    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;lt;Style x:Key=&lt;span style="color: #006080"&gt;&amp;quot;RightScrollbarScrollerTemplate&amp;quot;&lt;/span&gt; TargetType=&lt;span style="color: #006080"&gt;&amp;quot;ScrollViewer&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &amp;lt;Setter Property=&lt;span style="color: #006080"&gt;&amp;quot;TextAlignment&amp;quot;&lt;/span&gt; Value=&lt;span style="color: #006080"&gt;&amp;quot;Left&amp;quot;&lt;/span&gt;/&amp;gt;&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &amp;lt;Setter Property=&lt;span style="color: #006080"&gt;&amp;quot;TextWrapping&amp;quot;&lt;/span&gt; Value=&lt;span style="color: #006080"&gt;&amp;quot;NoWrap&amp;quot;&lt;/span&gt;/&amp;gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Those properties were removed for compatibility with WPF. You now have to make sure that the ContentControl’s container sets Text* properties correctly – either explicitly or via &amp;lt;Style&amp;gt;&lt;/p&gt;

&lt;h3&gt;5. ContentPresenter no longer derives from Control, thus it’s missing a number of properties that could be set in code or in XAML.&lt;/h3&gt;

&lt;p&gt;Jesse &lt;a href="http://silverlight.net/blogs/jesseliberty/archive/2008/09/28/rc0-amp-contentpresenter.aspx"&gt;posted about solving these issues at length&lt;/a&gt;. The good news is that you can catch this issue at design time through Visual Studio warnings: &lt;/p&gt;

&lt;p&gt;The property 'Foreground' does not exist on the type 'ContentPresenter' in the XML namespace '&lt;a href="http://schemas.microsoft.com/winfx/2006/xaml/presentation'"&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation'&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;and at run time with XamlParseExceptions when launching the app: XamlParseException: Unknown attribute Foreground on element ContentPresenter. &lt;/p&gt;

&lt;h3&gt;6. The name of the Duration property on Visual Transition changed to GeneratedDuration.effects you’ll see are:&lt;/h3&gt;

&lt;p&gt;Compiler errors:&lt;/p&gt;

&lt;p&gt;The property 'Duration' was not found in type 'VisualTransition'.&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;

&lt;p&gt;and Validation warnings:&lt;/p&gt;

&lt;p&gt;The property 'Duration' does not exist on the type 'VisualTransition' in the XML namespace 'clr-namespace:System.Windows;assembly=System.Windows'.&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;

&lt;p&gt;Follow &lt;a href="http://silverlight.net/blogs/jesseliberty/archive/2008/09/28/rc0-amp-contentpresenter.aspx"&gt;Jesse’s instructions&lt;/a&gt; to fix it.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;For other issues check the breaking changes documentation or start with &lt;a href="http://silverlight.net/blogs/msnow/archive/2008/09/25/silverlight-version-2-rc0-release.aspx"&gt;Mike’s post&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6675235" width="1" height="1"&gt;</description></item><item><title>Mobile Client Software Factory on VS 2008? Sure!</title><link>http://weblogs.asp.net/cschittko/archive/2008/09/25/mobile-client-software-factory-on-vs-2008-sure.aspx</link><pubDate>Thu, 25 Sep 2008 13:21:23 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6641430</guid><dc:creator>ChristophDotNet</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://weblogs.asp.net/cschittko/rsscomments.aspx?PostID=6641430</wfw:commentRss><wfw:comment>http://weblogs.asp.net/cschittko/commentapi.aspx?PostID=6641430</wfw:comment><comments>http://weblogs.asp.net/cschittko/archive/2008/09/25/mobile-client-software-factory-on-vs-2008-sure.aspx#comments</comments><description>&lt;p&gt;One of my customers was interested in some of the cool features of the &lt;a href="http://msdn.microsoft.com/en-us/library/aa480471.aspx"&gt;Mobile Client Software Factory&lt;/a&gt;, but they wanted to develop on Visual Studio 2008. The original version from &lt;a href="http://msdn.microsoft.com/en-us/practices/default.aspx"&gt;p&amp;amp;p&lt;/a&gt; wasn’t updated to VS 2008, but &lt;a href="http://blogs.msdn.com/gblock/"&gt;Glenn Block&lt;/a&gt; has a &lt;a href="http://blogs.msdn.com/gblock/archive/2008/04/22/porting-mobile-client-software-factory-to-visual-studio-2008.aspx#8877189"&gt;post that describes how to get MSCF to run in VS 2008&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;We had some initial problems getting it to work.If you do, too, here are some things to check:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Make sure you have v.1.4 of GAT/GAX installed: &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;1) GAX February 2008 Release&lt;/p&gt;    &lt;p&gt;&lt;a href="http://www.microsoft.com/Downloads/details.aspx?familyid=DF79C099-4753-4A59-91E3-5020D9714E4E&amp;amp;displaylang=en"&gt;http://www.microsoft.com/Downloads/details.aspx?familyid=DF79C099-4753-4A59-91E3-5020D9714E4E&amp;amp;displaylang=en&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;2) GAT &lt;b&gt;&lt;u&gt;for VS2008&lt;/u&gt;&lt;/b&gt; - February 2008 Release&lt;/p&gt;    &lt;p&gt;&lt;a href="http://www.microsoft.com/Downloads/details.aspx?familyid=B91066B3-D1D6-4990-A45F-34CF8DBDC60C&amp;amp;displaylang=en"&gt;http://www.microsoft.com/Downloads/details.aspx?familyid=B91066B3-D1D6-4990-A45F-34CF8DBDC60C&amp;amp;displaylang=en&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;You may need also to change the GATRegistry value to “Installer\Products\A741EEBC995A0984782CC041A01336F3”. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Additionally, the MSCF MSI performs checks for ActiveSync 4.5 and Windows Mobile Pocket PC 5.0 SDK.&lt;/p&gt;  &lt;p&gt;For ActiveSync on WinXP you need:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/windowsmobile/en-us/downloads/eulas/eula_activesync45_1033.mspx?ProductID=76"&gt;http://www.microsoft.com/windowsmobile/en-us/downloads/eulas/eula_activesync45_1033.mspx?ProductID=76&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;On Vista you don’t have ActiveSync but you need WMDC:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=46F72DF1-E46A-4A5F-A791-09F07AAA1914&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=46F72DF1-E46A-4A5F-A791-09F07AAA1914&amp;amp;displaylang=en&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Once you have ActiveSync or WMDC you can install WM5.0 Pocket PC SDK.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=83A52AF2-F524-4EC5-9155-717CBE5D25ED&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=83A52AF2-F524-4EC5-9155-717CBE5D25ED&amp;amp;displaylang=en&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Also note, that if you’re after the Orientation Aware Control from the mobile composite UI block, Clarius has a &lt;a href="http://www.orientationaware.net"&gt;newer version for VS 2008&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6641430" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/cschittko/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/cschittko/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://weblogs.asp.net/cschittko/archive/tags/Windows+Mobile/default.aspx">Windows Mobile</category></item><item><title>Apple ... Puhleeeeeeeeeze ...</title><link>http://weblogs.asp.net/cschittko/archive/2008/09/06/apple-puhleeeeeeeeeze.aspx</link><pubDate>Sun, 07 Sep 2008 02:36:28 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6606212</guid><dc:creator>ChristophDotNet</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/cschittko/rsscomments.aspx?PostID=6606212</wfw:commentRss><wfw:comment>http://weblogs.asp.net/cschittko/commentapi.aspx?PostID=6606212</wfw:comment><comments>http://weblogs.asp.net/cschittko/archive/2008/09/06/apple-puhleeeeeeeeeze.aspx#comments</comments><description>&lt;p&gt;Apple is the new Microsoft? Right ... they sneak Safari and MobileMe onto my system - without me asking. That's the kind of stuff Microsoft got in trouble for back in the mid 90s. Isn't it?&lt;/p&gt; &lt;p&gt;Now they are fast approaching being the new Netscape:&lt;/p&gt; &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/cschittko/WindowsLiveWriter/Apple...Puhleeeeeeeeeze_12D81/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="image" src="http://weblogs.asp.net/blogs/cschittko/WindowsLiveWriter/Apple...Puhleeeeeeeeeze_12D81/image_thumb.png" width="302" height="389"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;C'mon, can't you guys write software that doesn't crash when I don't want to install your products? (but hey, at least you asked me this time).&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6606212" width="1" height="1"&gt;</description></item><item><title>Presentation Canvas - Not Your Average PowerPoint</title><link>http://weblogs.asp.net/cschittko/archive/2008/08/15/presentation-canvas-not-your-average-powerpoint.aspx</link><pubDate>Fri, 15 Aug 2008 23:55:20 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6524681</guid><dc:creator>ChristophDotNet</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/cschittko/rsscomments.aspx?PostID=6524681</wfw:commentRss><wfw:comment>http://weblogs.asp.net/cschittko/commentapi.aspx?PostID=6524681</wfw:comment><comments>http://weblogs.asp.net/cschittko/archive/2008/08/15/presentation-canvas-not-your-average-powerpoint.aspx#comments</comments><description>The linear style forced by PowerPoint and the metaphor of a slide may have reached their limits. At least support for other styles is on its way ... of course also from the Office team. The innovation team in &lt;a href="http://www.officelabs.com"&gt;Office Labs&lt;/a&gt; to be exact.  &lt;p&gt;If you've seen my &lt;a href="http://weblogs.asp.net/cschittko/archive/2008/08/07/innovation-explore-the-interactive-deck-from-teched-2008.aspx"&gt;&amp;quot;interactive deck&amp;quot; from TechEd&lt;/a&gt; or the some recent Bill Gates demos then or the cool TouchWall demo for example, both showed the concept of a single canvas that you explore during a presentation instead of flipping from one slide to the next.&lt;/p&gt;  &lt;p&gt;The concept is very cool and promising, especially when you want to keep around all the information you collect as you build up a presentation. I tend to collect quotes, images, web pages, screenshots, all sorts of stuff that may or may not make it into the presentation. I have tons of OneNote books just filled information I collected for presentations. &lt;/p&gt;  &lt;p&gt;Of course, there's always this one guy in the audience that asks questions about things I didn't include in the deck.&lt;/p&gt;  &lt;p&gt;With the new tool from Office Labs, &lt;a href="http://www.officelabs.com/projects/pptPlex/Pages/default.aspx"&gt;pptPlex&lt;/a&gt; you get a PowerPoint add-in to build these single canvas presentations in PowerPoint. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/cschittko/WindowsLiveWriter/PresentationCanvasNotYourAveragePowerPoi_10A37/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="102" alt="image" src="http://weblogs.asp.net/blogs/cschittko/WindowsLiveWriter/PresentationCanvasNotYourAveragePowerPoi_10A37/image_thumb.png" width="493" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;It's way easier to use than my rather manual process for my DeepZoom app, which is build the image with DeepZoom&amp;#160; composer, then add various types of hotspots with a little Silverlight app.&lt;/p&gt;  &lt;p&gt;Have fun with the app.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6524681" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/cschittko/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://weblogs.asp.net/cschittko/archive/tags/VSTO/default.aspx">VSTO</category><category domain="http://weblogs.asp.net/cschittko/archive/tags/Innovation/default.aspx">Innovation</category></item><item><title>Innovation - Explore the Interactive Deck from TechEd 2008</title><link>http://weblogs.asp.net/cschittko/archive/2008/08/07/innovation-explore-the-interactive-deck-from-teched-2008.aspx</link><pubDate>Thu, 07 Aug 2008 14:45:45 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6494931</guid><dc:creator>ChristophDotNet</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://weblogs.asp.net/cschittko/rsscomments.aspx?PostID=6494931</wfw:commentRss><wfw:comment>http://weblogs.asp.net/cschittko/commentapi.aspx?PostID=6494931</wfw:comment><comments>http://weblogs.asp.net/cschittko/archive/2008/08/07/innovation-explore-the-interactive-deck-from-teched-2008.aspx#comments</comments><description>&lt;p&gt;As promised at my TechEd 2008 chalk talk &lt;strong&gt;Innovation 101: Tips &amp;amp; Tricks for Architects &amp;amp; Developers to Drive Innovation&lt;/strong&gt;, here's a slightly evolved version of my interactive deck. I had thought that a talk on innovation should innovate on the presentation tools and technique and here's what came out.&lt;/p&gt; &lt;p&gt;&lt;a href="http://silverlight.services.live.com/invoke/71954/innovation2/iframe.html"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://weblogs.asp.net/blogs/cschittko/WindowsLiveWriter/ab32d3000d70_FCB9/image_3.png" width="856" height="299"&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Click on the image to launch the application and start exploring the presentation canvas by panning downward &lt;a href="http://labs.live.com/Silverlight+2+Deep+Zoom.aspx"&gt;DeepZoom&lt;/a&gt; style.&lt;/p&gt; &lt;p&gt;You can jump between chapters with the '+' and '-' keys on the number pad. The chapters in this deck are:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Title Slide  &lt;li&gt;Why Innovation Matters and how to get started  &lt;li&gt;Processes, Styles and Ingredients of Successful Innovation  &lt;li&gt;Fail-Fast Pilot &amp;amp; Pitch  &lt;li&gt;Tools (Software and Motivational)  &lt;li&gt;Case Study: Microsoft's &lt;a href="http://www.realinnovation.com/commentary/archive/microsoft_national_innovation_forum_part_iii_innovation_practices.html"&gt;IdeAgency&lt;/a&gt;&amp;nbsp; &lt;li&gt;Case Study: Dell's &lt;a href="http://www.ideastorm.com/"&gt;IdeaStorm&lt;/a&gt;  &lt;li&gt;Myths and Gotchas  &lt;li&gt;Go and Innovate&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Additional Navigation Aids are:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&amp;lt;Home&amp;gt; - Zoom Out to show the entire canvas  &lt;li&gt;&amp;lt;Backspace&amp;gt; - Previous zoom level  &lt;li&gt;&amp;lt;Arrow Keys&amp;gt; - pan around the canvas  &lt;li&gt;&amp;lt;Mouse Wheel&amp;gt; - DeepZoom in and out&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;The idea for this presentation was borrowed from the Office Live team. They are they guys behind the &lt;a href="http://on10.net/blogs/sarahintampa/Bill-Gates-Demos-TouchWall-Like-Surface-for-the-Office/"&gt;TouchWall&lt;/a&gt; demo Bill Gates gave earlier this year and the &lt;a href="http://news.cnet.com/8301-10784_3-9950674-7.html"&gt;LaserTouch&lt;/a&gt; shown at the &lt;a href="http://news.cnet.com/8301-10784_3-9950631-7.html?tag=mncol;txt"&gt;Microsoft Research Roadshow&lt;/a&gt;. They just didn't have anything ready for me to show this summer. Fortunately, I still had some Silverlight DeepZoom code for a navigation hotspot framework laying around that I had written for a proof-of-concept earlier this year, which allowed me to pretty quickly build my own presentation app and a tool that helps with authoring the hotspots. Next time, I'll take more advantage of the framework's features with video, nested DeepZoom and others.&lt;/p&gt; &lt;p&gt;I hope you enjoy exploring the presentation adn please drop me a note if you're interested in the further conversations.&lt;/p&gt; &lt;p&gt;Much Thanks to Randy and the IdeAgency, Office Labs, &lt;a href="http://blogs.msdn.com/asehmi"&gt;Arvindra&lt;/a&gt; for being brave enough to present with the tool already, &lt;a href="http://blogs.msdn.com/benwilli/"&gt;Ben Williams&lt;/a&gt; for his help with &lt;a href="http://silverlight.live.com/"&gt;Silverlight Streaming&lt;/a&gt; to host the &lt;a href="http://silverlight.services.live.com/invoke/71954/innovation2/iframe.html"&gt;app&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6494931" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/cschittko/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://weblogs.asp.net/cschittko/archive/tags/Innovation/default.aspx">Innovation</category></item><item><title>Innovation on My Innovation Talk</title><link>http://weblogs.asp.net/cschittko/archive/2008/06/02/innovation-on-my-innovation-talk.aspx</link><pubDate>Tue, 03 Jun 2008 03:46:15 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6243787</guid><dc:creator>ChristophDotNet</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://weblogs.asp.net/cschittko/rsscomments.aspx?PostID=6243787</wfw:commentRss><wfw:comment>http://weblogs.asp.net/cschittko/commentapi.aspx?PostID=6243787</wfw:comment><comments>http://weblogs.asp.net/cschittko/archive/2008/06/02/innovation-on-my-innovation-talk.aspx#comments</comments><description>&lt;p&gt;Here’s my ONE slide for tomorrow’s talk:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/cschittko/WindowsLiveWriter/InnovationonMyInnovationTalk_1401F/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/cschittko/WindowsLiveWriter/InnovationonMyInnovationTalk_1401F/image_thumb.png" width="244" height="83" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;A deeper dive into the slide tomorrow at noon in Orlando at TechEd ;)&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6243787" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/cschittko/archive/tags/Innovation/default.aspx">Innovation</category></item><item><title>Innovation – How do You Enable Techies to Innovate?</title><link>http://weblogs.asp.net/cschittko/archive/2008/05/28/innovation-how-do-you-enable-techies-to-innovate.aspx</link><pubDate>Wed, 28 May 2008 17:22:43 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6226907</guid><dc:creator>ChristophDotNet</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/cschittko/rsscomments.aspx?PostID=6226907</wfw:commentRss><wfw:comment>http://weblogs.asp.net/cschittko/commentapi.aspx?PostID=6226907</wfw:comment><comments>http://weblogs.asp.net/cschittko/archive/2008/05/28/innovation-how-do-you-enable-techies-to-innovate.aspx#comments</comments><description>&lt;p&gt;Innovation is a key strategy to win with customers for several of the companies I work with. It’s a quite a successful strategy for technology and non-technology companies alike. Think of &lt;a href="http://www.microsoft.com/about/brandcampaigns/innovation/default.mspx"&gt;Microsoft&lt;/a&gt;, Google, Yahoo, &lt;a href="http://www.businessweek.com/bwdaily/dnflash/oct2004/nf20041012_4018_db083.htm"&gt;Apple&lt;/a&gt;, &lt;a href="http://www.businessweek.com/magazine/content/08_17/b4081064880218.htm"&gt;Amazon&lt;/a&gt;, &lt;a href="http://labs.travelocity.com/experiencefinder"&gt;Travelocity&lt;/a&gt; or even Frito-Lay, Pepsi, P&amp;amp;G, etc. Their thought leadership translates directly to market share and successful growth.&lt;/p&gt;  &lt;p&gt;Many of my customers (and Microsoft) are now recognizing that Innovation can happen across the company, not just inside an R&amp;amp;D organization. Engaging the entire company allows them to harvest the creative energy together product and domain knowledge of their own engineering teams to develop new features, products or entire businesses. Aside from that it’s a great tool for employee satisfaction if you allow them to pursue their passions once in a while.&lt;/p&gt;  &lt;p&gt;For example:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.google.com/support/jobs/bin/static.py?page=about.html&amp;amp;about=eng"&gt;Google’s 20% rule is famous&lt;/a&gt;,&lt;/p&gt;  &lt;p&gt;&lt;a href="http://search.live.com/results.aspx?q=yahoo+hackday"&gt;Yahoo’s hackdays for example have gotten broad attention&lt;/a&gt;, &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.informationweek.com/news/management/showArticle.jhtml?articleID=201200007&amp;amp;pgno=1"&gt;eBay is talking about their infrastructure to experiment&lt;/a&gt;,&lt;/p&gt;  &lt;p&gt;&lt;a href="http://exp-platform.com/default.aspx"&gt;Microsoft is building an Experimentation Platform for web applications&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Just like for any other part of the business, it’s important to treat Innovation as a process and support it with IT infrastructure to execute the process efficiently and cost effective.&lt;/p&gt;  &lt;p&gt;I’ll be talking about these processes and the infrastructure at my interactive chalk talk &lt;a href="http://www.microsoft.com/events/teched2008/developer/about/agenda.mspx"&gt;ARC08-TLC&lt;/a&gt; at &lt;a href="http://www.microsoft.com/events/teched2008/developer/default.mspx"&gt;TechEd Developers&lt;/a&gt; on Tuesday June 3rd noon-1:00pm. If you have any questions or successful practices from your organization to share, please shoot me a note, post a comment, or come by my session.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6226907" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/cschittko/archive/tags/Innovation/default.aspx">Innovation</category></item><item><title>WPF UI Update from Background Threads</title><link>http://weblogs.asp.net/cschittko/archive/2008/05/14/wpf-ui-update-from-background-threads.aspx</link><pubDate>Wed, 14 May 2008 17:30:36 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6189147</guid><dc:creator>ChristophDotNet</dc:creator><slash:comments>4</slash:comments><wfw:commentRss>http://weblogs.asp.net/cschittko/rsscomments.aspx?PostID=6189147</wfw:commentRss><wfw:comment>http://weblogs.asp.net/cschittko/commentapi.aspx?PostID=6189147</wfw:comment><comments>http://weblogs.asp.net/cschittko/archive/2008/05/14/wpf-ui-update-from-background-threads.aspx#comments</comments><description>&lt;p&gt;I'm trying to do my apps in any type of XAML these days since I finally think I &amp;quot;got it&amp;quot;. I wish I could claim that I will break free from the limitations of HTML and my new found liberty will result in fantastic looking apps -- but in reality, I still lack the design skills to come up with something that looks really cool.&lt;/p&gt;  &lt;p&gt;Either way, XAML presents a great opportunity to really innovate on the UIs with regards to looks and interactivity, regardless if you’re writing &lt;a href="http://windowsclient.net/default.aspx"&gt;desktop apps with WPF&lt;/a&gt;, web apps with &lt;a href="http://silverlight.net"&gt;Silverlight&lt;/a&gt;, mobile apps with &lt;a href="http://silverlight.net/learn/mobile.aspx"&gt;Silverlight Mobile&lt;/a&gt; or if you're programming for one of these cool &lt;a href="http://www.microsoft.com/surface"&gt;Surface tables&lt;/a&gt; ... and I will write my puny little test apps in WPF, even if they are just as ugly as my Windows Forms apps used to be.&lt;/p&gt;  &lt;p&gt;Now, I'm writing this cool little app and I want to do some interesting stuff in the background (my apps may be ugly, but at least they are responsive). &lt;a href="http://msdn.microsoft.com/en-us/library/ms750441.aspx#System_Threading_DispatcherObject"&gt;WPF is still STA&lt;/a&gt;, which means you still have to be explicit about posting back to the main UI thread if your background thread needs to communicate updates … bummer, but I thought I knew how to program async from my Windows Forms apps. As it turns out, it's a little bit different and there are few things to keep in mind. It also turns out that things are still not as widely document. That’s why I’m sharing.&lt;/p&gt;  &lt;p&gt;For starters, there's the handy Dispatcher on every &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.uielement.aspx"&gt;UIElement&lt;/a&gt; which provides the &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.threading.dispatcher.begininvoke.aspx"&gt;BeginInvoke&lt;/a&gt; method to run code on the right thread.&lt;/p&gt;  &lt;p&gt;For example, my program dispays progress with a WPF &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.progressbar.aspx"&gt;ProgressBar&lt;/a&gt; object. To update that ProgressBar from the background thread, the ProgressBar fires an event. The EventHandler then calls BeginInvoke, on the background thread. BeginInvoke will then pass the &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.threading.dispatcheroperationcallback.aspx"&gt;DispatcherOperationCallback&lt;/a&gt; to the main thread to execute:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;runner.RequestFinished += &lt;span class="kwrd"&gt;delegate&lt;/span&gt;(&lt;span class="kwrd"&gt;object&lt;/span&gt; s, RequestFinishedEventArgs e2)&lt;/pre&gt;

  &lt;pre&gt;{&lt;/pre&gt;

  &lt;pre class="alt"&gt;    System.Diagnostics.Debug.WriteLine(&lt;span class="str"&gt;&amp;quot;Update event handler called.&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    {&lt;/pre&gt;

  &lt;pre&gt;        progressBar1.Dispatcher.BeginInvoke(&lt;/pre&gt;

  &lt;pre class="alt"&gt;           System.Windows.Threading.DispatcherPriority.Normal&lt;/pre&gt;

  &lt;pre&gt;           , &lt;span class="kwrd"&gt;new&lt;/span&gt; DispatcherOperationCallback(&lt;span class="kwrd"&gt;delegate&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;                   {&lt;/pre&gt;

  &lt;pre&gt;                       System.Diagnostics.Debug.WriteLine(&lt;span class="str"&gt;&amp;quot;value is: &amp;quot;&lt;/span&gt; + progressBar1.Value);&lt;/pre&gt;

  &lt;pre class="alt"&gt;                       progressBar1.Value = progressBar1.Value + 1;&lt;/pre&gt;

  &lt;pre&gt;                       &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;                   }), &lt;span class="kwrd"&gt;null&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    }&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;catch&lt;/span&gt; (Exception ex)&lt;/pre&gt;

  &lt;pre class="alt"&gt;    {&lt;/pre&gt;

  &lt;pre&gt;        System.Diagnostics.Debug.WriteLine(ex.ToString());&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;};&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Works great - you see the progressBar update every time the event handler is invoked. I had some Debug.WriteLine statements in there to make sure:&lt;/p&gt;

&lt;p&gt;Update event handler called.&lt;/p&gt;

&lt;p&gt;value is: 0 &lt;strong&gt;&lt;em&gt;&amp;lt;—delegate being called to update the UI&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Update event handler called.&lt;/p&gt;

&lt;p&gt;value is: 1 &lt;em&gt;&lt;strong&gt;&amp;lt;—delegate being called to update the UI&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It works great … unless you're working with synchronization objects like &lt;a href="http://msdn.microsoft.com/en-us/library/system.threading.manualresetevent(VS.85).aspx"&gt;ManualResetEvent&lt;/a&gt;. My code was waiting *on the background thread* for my stuff to complete, while at the same time posting back to the main thread with BeginInvoke - under the assumption that only the background thread is blocking:&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;strong&gt;ManualResetEvent waiter;&lt;/strong&gt;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; TestRunner()&lt;/pre&gt;

  &lt;pre&gt;{&lt;/pre&gt;

  &lt;pre class="alt"&gt;    waiter = &lt;span class="kwrd"&gt;new&lt;/span&gt; ManualResetEvent(&lt;span class="kwrd"&gt;false&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;}&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; RunAsync(TestConfig conf)&lt;/pre&gt;

  &lt;pre class="alt"&gt;{&lt;/pre&gt;

  &lt;pre&gt;    Thread t = &lt;span class="kwrd"&gt;new&lt;/span&gt; Thread(RunInternal);&lt;/pre&gt;

  &lt;pre class="alt"&gt;    t.IsBackground = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;&lt;strong&gt;    conf.wait = waiter;&lt;/strong&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;strong&gt;    waiter.Reset();&lt;/strong&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;strong&gt;    t.Start(conf);&lt;/strong&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;strong&gt;    waiter.WaitOne();&lt;/strong&gt;&lt;/pre&gt;

  &lt;pre&gt;    System.Diagnostics.Debug.WriteLine(&lt;span class="str"&gt;&amp;quot;done waiting&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class="alt"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;WRONG assumption. The background thread is executing until the ManualResetEvent's WaitOne() returns. All the messages from the Dispatcher are queued up. Consequently, the progressBar doesn't update even though the background thread is operating as expected and the Debug Output looks like this:&lt;/p&gt;

&lt;p&gt;Update event handler called.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;&amp;lt;—delegate NOT called to update the UI&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Update event handler called.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;&amp;lt;—delegate NOT called to update the UI&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;done waiting &lt;strong&gt;&lt;em&gt;&amp;lt;—delegate NOT called until the ManualResetEvent was Set()&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;value is: 0&lt;/p&gt;

&lt;p&gt;value is: 1&lt;/p&gt;

&lt;p&gt;The best way around this is to architect your program event driven, for example as a state machine, and avoid synchronization objects altogether. &lt;/p&gt;

&lt;p&gt;Hopefully you enjoy UI programming with WPF or Silverlight as much as I do.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6189147" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/cschittko/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://weblogs.asp.net/cschittko/archive/tags/WPF/default.aspx">WPF</category></item><item><title>Silverlight 2.0 App Not Starting - Fix IIS</title><link>http://weblogs.asp.net/cschittko/archive/2008/03/03/silverlight-2-0-app-not-starting-fix-iis.aspx</link><pubDate>Mon, 03 Mar 2008 15:14:21 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:5906299</guid><dc:creator>ChristophDotNet</dc:creator><slash:comments>12</slash:comments><wfw:commentRss>http://weblogs.asp.net/cschittko/rsscomments.aspx?PostID=5906299</wfw:commentRss><wfw:comment>http://weblogs.asp.net/cschittko/commentapi.aspx?PostID=5906299</wfw:comment><comments>http://weblogs.asp.net/cschittko/archive/2008/03/03/silverlight-2-0-app-not-starting-fix-iis.aspx#comments</comments><description>&lt;p&gt;Silverlight 2.0 introduces a new application model. Assets for Silverlight applications, i.e. code and resources are packaged up in a .xap file. When you install the latest version of the The Silverlight Tools for Visual Studio 2008 (&lt;a title="http://www.microsoft.com/downloads/details.aspx?FamilyId=25144C27-6514-4AD4-8BCB-E2E051416E03&amp;amp;displaylang=en" href="http://www.microsoft.com/downloads/details.aspx?FamilyId=25144C27-6514-4AD4-8BCB-E2E051416E03&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=25144C27-6514-4AD4-8BCB-E2E051416E03&amp;amp;displaylang=en&lt;/a&gt;), you'll find that Silverlight projects automatically create the .xap packages when you check the Silverlight tab of the project properties:&lt;/p&gt; &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/cschittko/WindowsLiveWriter/58971f8eb17c_D54B/image_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="335" alt="image" src="http://weblogs.asp.net/blogs/cschittko/WindowsLiveWriter/58971f8eb17c_D54B/image_thumb.png" width="615" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;These .xap files are nothing but zip archives with a different file extension (kinda like the &lt;a href="http://www.docx2doc.com/Newbies-Guide-To-docx.aspx"&gt;Office 2007 documents are zip files&lt;/a&gt; ). You can take a look at the contents of a .xap by renaming it to .zip:&lt;/p&gt; &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/cschittko/WindowsLiveWriter/58971f8eb17c_D54B/image_10.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="183" alt="image" src="http://weblogs.asp.net/blogs/cschittko/WindowsLiveWriter/58971f8eb17c_D54B/image_thumb_4.png" width="461" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;If you're serving up Silverlight applications packaged as .xap files from an IIS 7 server, i.e. from Windows Vista or from Windows Server 2008, you may also have to set up a MIME type for the .xap files.&lt;/p&gt; &lt;p&gt;Without the MIME type you'll find that your Silverlight apps seem to hang trying to download. The default download page would say something like "Silverlight is downloading your components....wait!!"&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;a href="http://weblogs.asp.net/blogs/cschittko/WindowsLiveWriter/58971f8eb17c_D54B/image_6.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="157" alt="image" src="http://weblogs.asp.net/blogs/cschittko/WindowsLiveWriter/58971f8eb17c_D54B/image_thumb_2.png" width="578" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;but the download is actually not hanging. You can take a look what's really going on between the browser and the web server with the excellent &lt;a href="http://www.fiddlertool.com"&gt;fiddler tool&lt;/a&gt;.You'll see that the browser's request for the .xap file actually fails with a 404.3 error. &lt;/p&gt; &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/cschittko/WindowsLiveWriter/58971f8eb17c_D54B/image_8.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="39" alt="image" src="http://weblogs.asp.net/blogs/cschittko/WindowsLiveWriter/58971f8eb17c_D54B/image_thumb_3.png" width="846" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;You can read the error in the fiddler tool or you can just get the nicely formatted error page by requesting the .xap file directly. The page even includes the necessary information to troubleshoot the problem.&lt;/p&gt; &lt;blockquote&gt; &lt;h4&gt;HTTP Error 404.3 - Not Found&lt;/h4&gt; &lt;h5&gt;The page you are requesting cannot be served because of the extension configuration. If the page is a script, add a handler.&lt;font color="#ff0000"&gt; If the file should be downloaded, add a MIME map.&lt;/font&gt;&lt;/h5&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;li&gt;&lt;font color="#ff0000"&gt;Verify that the MIME map is enabled&lt;/font&gt; or add the MIME map for the Web site using the command-line tool appcmd.exe.  &lt;ol&gt; &lt;li&gt;To set a MIME type, use the following syntax: %SystemRoot%\windows\system32\inetsrv\appcmd set config /section:staticContent /+[fileExtension='string',mimeType='string']  &lt;li&gt;The variable fileExtension string is the file name extension and the variable mimeType string is the file type description.  &lt;li&gt;For example, to add a MIME map for a file which has the extension ".xyz": appcmd set config /section:staticContent /+[fileExtension='.xyz',mimeType='text/plain'] &lt;/li&gt;&lt;/ol&gt;Warning: Ensure that this MIME mapping is needed for your Web server before adding it to the list. Configuration files such as .CONFIG or dynamic scripting pages such as .ASP or .ASPX, should not be downloaded directly and should always be processed through a handler. Other files such as database files or those used to store configuration, like .XML or .MDF, are sometimes used to store configuration information. Determine if clients can download these file types before enabling them.&lt;/li&gt;&lt;/blockquote&gt; &lt;p&gt; &lt;p&gt;If you're not comfortable with the command-line tool, you could also configure the MIME type with the IIS management tool (running with admin privileges, of course) by clicking on the MIME Types icon in the Features View&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;a href="http://weblogs.asp.net/blogs/cschittko/WindowsLiveWriter/58971f8eb17c_D54B/image_12.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="385" alt="image" src="http://weblogs.asp.net/blogs/cschittko/WindowsLiveWriter/58971f8eb17c_D54B/image_thumb_5.png" width="808" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;and then adding the type: application/x-silverlight-app for the File name extension .xap.&lt;/p&gt; &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/cschittko/WindowsLiveWriter/58971f8eb17c_D54B/image_14.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="195" alt="image" src="http://weblogs.asp.net/blogs/cschittko/WindowsLiveWriter/58971f8eb17c_D54B/image_thumb_1.png" width="485" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;The good news for the people that are already running Vista SP1 or Windows Server 2008 is that both OSs already have IIS7 configured for the MIME type. If you upgrade to Vista SP1, then you need to have re-install IIS after you applied the service pack.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5906299" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/cschittko/archive/tags/Silverlight/default.aspx">Silverlight</category></item></channel></rss>
