File Download НЕ работает на Vista

User123456789
Дата: 05.06.2008 12:44:14
Привет всем!

История:
На странице организован даунлоад файлов. Имя файла выбирается из списка (RadioButtonList), хлопаем по кнопке "Скачать", Выбранный файл сгружается с сервера.
Сами файлы просто так из сети НЕдоступны. Список файло зависит от прав доступа пользователя...

Код для даунлоада я подсмотрел здесь: http://support.microsoft.com/default.aspx?scid=kb;en-us;812406


    Protected Sub btnDownload_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnDownload.Click
        'http://support.microsoft.com/default.aspx?scid=kb;en-us;812406

        ' Identify the file to download including its path.
        Dim strFilePath As String = "C:\MyFolder\MyFile.jpg"

        Dim myFileInfo As New System.IO.FileInfo(strFilePath)
        If (myFileInfo.Exists) Then

            ' Open the file.
            Dim myStream As New System.IO.FileStream(strFilePath, System.IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.Read)
            Try
                Response.ContentType = "application/octet-stream"
                Response.AddHeader("Content-Disposition", "attachment; filename=" & myFileInfo.Name)

                ' Total bytes to read:
                Dim lngDataToRead As Long = myStream.Length
                ' Buffer to read 10K bytes in chunk:
                Dim myBuffer(10000) As Byte
                ' Length of the file:
                Dim intLength As Integer

                ' Read the bytes.
                While lngDataToRead > 0
                    ' Verify that the client is connected.
                    If Response.IsClientConnected Then
                        ' Read the data in buffer
                        intLength = myStream.Read(myBuffer, 0, 10000)
                        ' Write the data to the current output stream.
                        Response.OutputStream.Write(myBuffer, 0, intLength)
                        ' Flush the data to the HTML output.
                        Response.Flush()
                        ReDim myBuffer(10000) ' Clear the buffer
                        lngDataToRead = lngDataToRead - intLength
                    Else
                        'prevent infinite loop if user disconnects
                        lngDataToRead = -1
                    End If
                End While

            Catch ex As Exception
                ' Show error message 1...
            Finally
                If (Not IsNothing(myStream)) Then myStream.Close()
                myStream = Nothing
                Response.Close()
            End Try

        Else
            ' Show error message 2...
        End If

    End Sub

Проблема:
Это готово и нормально работает на Win.XP и Win.2003 Server. (.NET Framework 2.0, IIS 6)
Но это НЕ работает на Win.Vista (.NET Framework 3.0 (или 3.5), IIS 7)

Шеф хотел презентировать систему с ноутбука, а тут такая засада... Шеф вместе с ноутбуком уехал, а мне всё надо до ума довести...

Из-за чего проблема? Как победить?
Zorina
Дата: 05.06.2008 13:47:47
что значит не работает - ошибка у вас хоть есть какая-ить, или на каком месте облом происходит выяснили?:).
______________________________________
http://asp.net/learn/data-access/

Ищи там где потерял, а не там где светло.
мы с вами когда-то где-то уже встречались да, я была уже когда-то где-то.

User123456789
Дата: 05.06.2008 15:00:09
Zorina
что значит не работает - ошибка у вас хоть есть какая-ить, или на каком месте облом происходит выяснили?:).

Я это тоже хочу узнать... :(
У меня Win.XP Pro + VS 2005. Ноутбук с Vista у шефа, шеф - в самолёте, самолёт в небе... На работе машин Vista + VS нет.

При работе на Vista скрипт НЕ заваливается. Всё выглядит прилично. После хлопка на кнопке "Скачать" появляется окошко с вопросом "Открыть, сохранить..., отменить".
Если выбрать "Открыть" - больше ничего не происходит, никаких тревожных сообщений.
Если выбрать "Сохранить.." - появляется диалог сохранения файла, дальше - ничего, файла нет.

Отловить и показать ex.Message, например, с помощью Response.Write() тоже не могу: после начала записи в поток браузера это невозможно.
Единственный вариант -- запустить это в VisualStudio из-под Vista и пройти пошагово... Но во-первых, где находится ноутбук я уже сообщил, во-вторых, мы не настолько сумасшедшие чтобы начинать ставить Студию на нашину, на которой будет крутиться через 3 часа презентация... В-третьих, на работе машин Vista + VS нет.

Я подготовил небольшой тест - проектик (Visual Studio 2005)...
Может кто сможет запустить на машине с Vista и поделится лезуртатами?..
Nisus
Дата: 05.06.2008 15:49:24
все работает как часы, собственно там и ломаться-то нечему. Вообще странно, если появляется диалог - открыть/сохранить значит как минимум заголовки отдались нормально, уберите от греха пока проверку на isConnected.
Zorina
Дата: 05.06.2008 16:31:36
может там с IE или security чего намутили ? 
______________________________________
http://asp.net/learn/data-access/

Ищи там где потерял, а не там где светло.
мы с вами когда-то где-то уже встречались да, я была уже когда-то где-то.