Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Response.End / 8 сообщений из 8, страница 1 из 1
16.11.2005, 13:38
    #33381383
Лиман Артём
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Response.End
Привет!
Нарвлася вот на такие грабли:
Сделал загрузку файла , через .aspx страничку, которая на PageLoad формировала ответ в Response, а в конце Response.End - что бы закончить запрос без добавления ненужной инфы. Всё хорошо работало в дебаг версии. Response.End генерирует ThreadAbortException, который в дебаге глушился кем то (есть подозрение, что http хэндлером). В релизе этот эксепшн вываливается наружу. Хотелеось бы услышать мнения, о том, как эту ситуацию правильно обработать.
На данный момент, этот ThreadAbortException перехватывается моим HttpHandlerом на ProcessRequest и глушится, но я не уверен, что это на 100% правильный подход. Может быть достаточно, что то поменять в файле конфигурации?

ЗЫ: кстати погуглил на эту тему, но так конкретного ничего не увидел..
_______________________________________________________
Господи, сколько ещё не сделано... А сколько ещё предстоит не сделать...!
...
Рейтинг: 0 / 0
16.11.2005, 13:53
    #33381454
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Response.End
я вот так передавал файлы - вроде вообще ничего глушить не надо (всё работает и при дебаге и при релизе)
...
Рейтинг: 0 / 0
16.11.2005, 14:28
    #33381590
Лиман Артём
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Response.End
не уверен, что мне такой способ подойдет. Я не использую промежуточных файлов и всё формирую прямо в Response.OutputStream, поэтому Response.End мне необходим, иначе лезит ненужная инфа и портит контент.

_______________________________________________________
Господи, сколько ещё не сделано... А сколько ещё предстоит не сделать...!
...
Рейтинг: 0 / 0
16.11.2005, 14:38
    #33381624
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Response.End
Артём - я не настаиваю... Я просто не очень понимаю:
авторЯ не использую промежуточных файлов
ну и не используй себе на здоровье - загрузка файла происходит по событию - нажатие кнопки например - вот и вставь в странице - на нужном событии этот код...
авторвсё формирую прямо в Response.OutputStream
Вообще чего то не догнал - вроде код именно так и передаёт файл???!!!
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
 While dataToRead >  0 
                ' Verify that the client is connected.
                If Response.IsClientConnected Then
                    ' Read the data in buffer
                    length = iStream.Read(buffer,  0 ,  10000 )

                    ' Write the data to the current output stream.
                    Response.OutputStream.Write(buffer, 0, length)

                    ' Flush the data to the HTML output.
                    Response.Flush()

                    ReDim buffer( 10000 ) ' Clear the buffer
                    dataToRead = dataToRead - length
                Else
                    'prevent infinite loop if user disconnects
                    dataToRead = - 1 
                End If
            End While
...
Рейтинг: 0 / 0
16.11.2005, 14:59
    #33381698
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Response.End
вот так я читаю картинки - в принципе теже файлы, напрямую из базы через
showphoto.aspx
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
Imports System.Data

Public Class PictureHandler
    Implements IHttpHandler

    Public ReadOnly Property IsReusable() As Boolean Implements System.Web.IHttpHandler.IsReusable
        Get
            Return True
        End Get
    End Property

    Public Sub ProcessRequest(ByVal context As System.Web.HttpContext) Implements System.Web.IHttpHandler.ProcessRequest
        Dim Request As HttpRequest = context.Request
        Dim Response As HttpResponse = context.Response
        Dim UID As Integer = Int32.Parse(Request.QueryString("UID"))
        Dim dr As SqlClient.SqlDataReader
        Dim l As Int32
       

        Select Case Request.QueryString("Type")
            Case "AlbumSmall"
                Call clsSQL.OpenCursor(dr, "select pic2 from AlbumsPhotos where uid=" & CStr(UID))
            Case "AlbumBig"
                Call clsSQL.OpenCursor(dr, "select pic1 from AlbumsPhotos where uid=" & CStr(UID))
            Case Nothing
                Call clsSQL.OpenCursor(dr, "select pic from CarPictures where uid=" & CStr(UID))
        End Select


        dr.Read()
        Response.ContentType = "image/jpeg"



        Response.OutputStream.Write(dr.GetSqlBinary( 0 ).Value,  0 , dr.GetSqlBinary( 0 ).Length)

        Response.End()

    End Sub
End Class
вроде косяков не наблюдаю
вот пример моего проекта, использующего эту фишку.
...
Рейтинг: 0 / 0
16.11.2005, 16:42
    #33382095
VladiCh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Response.End
Это правильный подход, если действительно требуется Response.End. Есть подозрение, что у вас можно обойтись и без него.
...
Рейтинг: 0 / 0
16.11.2005, 16:46
    #33382111
Лиман Артём
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Response.End
Всем спасибо, проблема решилась сама собой - обошолся без Response.End()
2vladgrig , ты прав, невнимательно смотрел...
_______________________________________________________
Господи, сколько ещё не сделано... А сколько ещё предстоит не сделать...!
...
Рейтинг: 0 / 0
16.11.2005, 16:47
    #33382114
Лиман Артём
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Response.End
VladiChЭто правильный подход, если действительно требуется Response.End. Есть подозрение, что у вас можно обойтись и без него.

уже на 100% не требуется :)
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Response.End / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]