Archive

Posts Tagged ‘Loading’

Gotcha: Image component not loading remote URLs during debugging

At ClipFlair’s Image component I use the following XAML to make it show an image from a URL that its ViewModel holds at a property named “Source”, of type Uri (URI = Uniform or Universal Resource Identifier in W3C parlance, something like a superset of the old classic URLs).

<Image Name="imgContent"
       HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
       Source="{Binding Source, Mode=OneWay}"
       Stretch="{Binding Stretch, Mode=OneWay}"
       >

I’ve had issues in the past with that component not loading an image, a tricky issue was when I had used Mode=TwoWay when data-binding to Source property – that was disastrous, since the Source property expects an ImageSource and just “plays it clever” internally, also accepting a conversion from a Uri. So when doing reverse binding too, you’d end up getting a null value at respective the ViewModel property.

So when it recently started not showing the test image (from a remote URL) that I had been using, I started wondering if it was some regression of that older bug, but couldn’t find some change in the respective code, plus in the Visual Studio XAML designer the component would load and display the remote image fine.

It turned out to be an issue with Silverlight’s security policy regarding cross-site access. The Image control is supposed to be able to load images from any remote URL (without the remote web server needing to have a ClientAccessPolicy.xml file for example to allow it, as is the case with the WebClient class), however I had recently found out that if at your Silverlight project you have selected at the “Debug”  tab the “Dynamically generate a test page” option, the Image control wouldn’t load remote images.

What I didn’t know was that even the “Out-of-browser application option there won’t let the Image control load remote images if you don’t select the web project that goes with your Silverlight project (supposing you have them in the same Visual Studio solution), but you happen to select your Silverlight project instead from the dropdown list.

I had changed that option without thinking it might cause an issue while doing other changes in the project. That’s why one should try to do a minimal set of related changes only and test again thoroughly each time (if only they had the time available to do it), so that they can spot such issues early and be able to relate newly introduced bugs to the recent small set of changes, helping to track down the exact change that caused the unwanted behaviour.

image

InitializeError Message: Failed to load a platform extension in Silverlight

If you get an error like:

Unhandled Error in Silverlight Application Code: 2153 Category: InitializeError Message: Failed to load a platform extension. Possibly corrupt or invalid file: …

when you try to launch your Silverlight application (especially if you have the project set to use an autogenerated test page), you should read:

http://forums.silverlight.net/t/185747.aspx/1

In my case the suggestion to turn off “Reduce XAP size by using application library caching” setting at the Silverlight library project settings fixed the issue.

I was using the internal Visual Studio development web server (Cassini), but some people at the discussion thread above also say it can occur in IIS7, with the problem actually being in compression settings (need to turn off option "Enable dynamic content compression”) and they point to the following discussion:

http://forums.iis.net/p/1164340/2023839.aspx#2023839

%d bloggers like this: