2010-09-07 2 views
2

Je travaille sur une application Silverlight 4 assez volumineuse (42 projets en 1 solution), et je suis aux prises avec un problème vraiment étrange. L'application fonctionne correctement dans une version de débogage, et même dans la version release, elle fonctionne avec le débogueur attaché (F5), mais lorsqu'elle est exécutée sans débogage, le xap silverlight se charge et affiche uniquement une page vierge.L'application Silverlight 4 affiche une page blanche dans la version release

Je gère Application_UnhandledException qui ne se déclenche pas, il est donc presque impossible d'obtenir des informations utiles, surtout que je ne peux pas reproduire ce comportement avec le débogueur attaché.

Quelles différences y a-t-il lors de l'exécution lorsque le débogueur est connecté, ce qui pourrait causer ce problème?

Éditer: Je devrais également ajouter que la construction de débogage s'exécute également sans le débogueur attaché.

+0

Est-ce une application OOB? –

+0

Non, c'est dans le navigateur – Andronicus

Répondre

2

Il s'est avéré que le problème était que la version release effectuait certaines optimisations qui modifient l'assembly appelant.

Nous enregistrons les types dans un conteneur IoC en utilisant la réflexion, et dans le débogage Assembly.GetCallingAssembly(). GetTypes() renvoie toujours l'assembly attendu. Mais en mode release, l'assembly appelant est l'assembly DynamicMethods hébergé anonymement généré, donc nos types ne sont pas enregistrés dans le conteneur IoC, et l'application se bloque en mode release.

Le correctif consistait à utiliser this.GetType(). Assembly à la place. Ce qui complique le problème, c'est que Silverlight n'affiche qu'une page blanche lorsqu'une exception est levée depuis le conteneur IoC. Il est donc très difficile d'identifier la cause de l'échec. Sûrement il y a un moyen de modifier ce comportement?

+0

+1. Bonne trouvaille et suivi. Cette question/réponse sera sûrement utile à d'autres dans le futur qui se heurteront au problème. –

1

Une raison courante pour les pages vierges sur IIS Deployment est l'absence de définitions MIME TYPES. Selon le type d'une des applications silverlight doit ajouter un ou plusieurs des types suivants:

demande .xap/x-silverlight-app l'application XAML/XAML + xml l'application .xbap/x-ms- xbap

Questions connexes