2009-12-10 6 views
2

J'ai une application XBAP, qui montre quelques images, et mes utilisateurs voudraient enregistrer certains d'entre eux sur le disque. Mais mon application XBAP fonctionne en mode de confiance partielle, donc elle ne peut pas initier SaveFileDialog, sans mentionner qu'elle ne peut pas accéder au système de fichiers.Comment enregistrer une image à partir d'une application XBAP de confiance partielle?

Quel est le moyen recommandé par Stack Overflow pour sauvegarder une image sur le disque dans ce cas?

Répondre

1

J'ai trouvé une solution à mon problème et je vais mettre cette réponse comme un wiki communautaire.

Comme prévu, je n'ai pas pu accéder au système de fichiers, afficher SaveFileDialog ou enregistrer l'image dans le Presse-papiers en raison des limitations de sécurité partielle-confiance.

Alors, je l'ai créé un .ashx handler sur le site, dont mon application XBAP est déployée, qui reçoit une certaine id d'image dans la chaîne d'URL, interroge l'image de la DB, et renvoie l'image (context.WriteBinary) sous l'en-tête de contenu approprié "image/jpeg".

Dans mon XBAP, au lieu du contrôle Image j'ai mis le contrôle WebBrowser, fourni avec l'URI approprié (vous pourriez avoir besoin a trick to bind the Source property). Vous pouvez uniquement spécifier un URI pointant vers le site d'origine de votre application XBAP. Il peut être un chemin absolu, ou il peut utiliser la syntaxe spéciale dont pack://siteoforigin:,,

Voila, maintenant l'image prend en charge le menu standard contextuel du navigateur avec « Enregistrer ... », « Définir comme fond » et tous les autres éléments utiles :-)

Questions connexes