Je cherche à renvoyer une image à partir d'un serveur en utilisant Silverlight 3. Le serveur renvoie le flux de réponse comme ceci:flux de réponse d'ouverture dans silverlight
context.Response.ContentType = imageFactory.ContentType
imgStream.WriteTo(context.Response.OutputStream)
imgStream.Close()
context.Response.End()
Sur le client Silverlight Je suis en charge du flux comme:
Dim request As HttpWebRequest = result.AsyncState
Dim response As HttpWebResponse = request.EndGetResponse(result)
Dim responseStream As IO.Stream = response.GetResponseStream()
Je veux prendre ce cours d'eau et ouvrir par les navigateurs de dialogue, une option que j'ai exploré est d'utiliser le Html.Window.Navigate (New Uri (« URL de l'image »)), ce qui a ouvert la boîte de dialogue par défaut du navigateur correct mais ce n'est pas une option parce que j'ai besoin d'envoyer des informations étendues (par exemple XML) à le serveur à travers le HttpRequest.Headers.Item et le Navigate ne le permet pas.
Comment puis-je prendre un flux de réponse et forcer la boîte de dialogue Enregistrer le navigateur par défaut à apparaître à partir de l'application Silverlight sans utiliser Html.Window.Navigate (New Uri ("image url"))?
Merci, Anthony. Cela fonctionne et l'application SL conserve son état actuel. Question: Quelle est la raison de ne pas utiliser Response.End()? –
@John: Response.End() lève ThreadAbortException et tue tout autre traitement de réponse, y compris tout post-traitement qui pourrait se produire dans les modules. C'est beaucoup mieux de laisser le code arriver à sa fin naturelle que de le tuer de façon si spectaculaire. – AnthonyWJones