Situation: your Silverlight 3 application is calling a web service and while it works fine in the browser, it miserably fails in out of the browser mode (OOB).
Don’t panic. It seems that you cannot call a webservice (in App.xaml.cs) before having assigned the application’s root visual. As mentioned, this is not a problem when the application runs inside the browser.
So, for example, this will fail (timeout):
private void Application_Startup(object sender, StartupEventArgs e) { myService.MyMethodCompleted((s, e) => this.RootVisual = new MyPage()); myService.MyMethodAsync(); }
while this will work fine:
private void Application_Startup(object sender, StartupEventArgs e) { this.RootVisual = new MyPage(); myService.MyMethodAsync(); }
On a side note, remember that RootVisual can only be set once. I haven’t checked what happens with Silverlight 4, but if you are seeing weird behaviours it may be worth it to check this before setting everything on fire.
I hope I saved you long hours sniffing http traffic, checking for crossdomain issues, etc… :-)
Happy coding!