Я пытаюсь вернуть изображение с сервера с помощью Silverlight 3. Сервер возвращает поток ответа, как это:Открытие в SilverLight
context.Response.ContentType = imageFactory.ContentType
imgStream.WriteTo(context.Response.OutputStream)
imgStream.Close()
context.Response.End()
На Silverlight клиента я обработки потока как:
Dim request As HttpWebRequest = result.AsyncState
Dim response As HttpWebResponse = request.EndGetResponse(result)
Dim responseStream As IO.Stream = response.GetResponseStream()
Я хочу взять этот поток и открыть браузеры сохранить диалог, один вариант я исследовал это с помощью Html.Window.Navigate (New Uri («URL изображения»)), и это открыло корректный диалог по умолчанию браузера но это не вариант, потому что мне нужно отправить расширенную информацию (например, XML) в сервер через HttpRequest.Headers.Item и Navigate не позволяет этого.
Как я могу взять поток ответа и принудительно отображать диалоговое окно сохранения браузера по умолчанию из приложения Silverlight без использования Html.Window.Navigate (New Uri («url изображения»))?
Спасибо, Энтони. Это действительно работает, и приложение SL сохраняет текущее состояние. Вопрос: В чем причина не использования Response.End()? –
@John: Response.End() генерирует исключение ThreadAbortException и уничтожает любую последующую обработку ответа, включая любую пост-обработку, которая может произойти в модулях. Его гораздо лучше позволить коду прийти к своему естественному концу, чем резко убить его так резко. – AnthonyWJones