none
Não é possível acessar um fluxo fechado. AspNet RRS feed

  • Pergunta

  • Estou com um problema, e  nao sei oque vou fazer para resolver, já vi uns exemplos e já testei, mas nao tive sucesso.

    Engraçado que o  sistema funciona normal quando rodo ele localmente, quando publico e coloco na net ele da esse erro de fluxo.

    Help Me !

    terça-feira, 2 de junho de 2015 18:59

Respostas

  • Olá Jeff, provavelmente seja limite de tamanho de arquivo.

    Sendo assim peço que você faça da seguinte forma:

    private void FullGravaçãoAudio()
    {
    	string folder = Session["folder"].ToString();
    	string musica = "Gravações.zip";
    	string fName = @"C:\GravaçãoTelecall\" + musica + "";
    
    	Response.ContentType = "application/pdf";
    	Response.AddHeader("content-disposition", "attachment; filename=" + musica);
    	Response.TransmitFile(fName);
    	Response.End();
    }


    Att, Lucio Rogerio


    Espero ter ajudado, se ajudei, por favor "Vote como Útil", e se resolvi seu problema, clique em "Propor como Resposta".

    sexta-feira, 19 de junho de 2015 20:08

Todas as Respostas

  • Não entendo local ele funciona quando publico aparece a mensagem de erro.

    Can not access a closed Stream.

        for (int i = 0; dt2.Rows.Count > i; i++)
                {
                    string gravacao = dt2.Rows[i]["Gravação"].ToString();
                    string zipFilename = @"C:\GravaçãoTelecall\Gravações.zip";
                    string filenameToAdd = @"C:\GravaçãoTelecall\" + gravacao + "";


                    using (Package zipPackage = ZipPackage.Open(zipFilename, FileMode.OpenOrCreate))
                    {
                        string destFilename = ".\\" + Path.GetFileName(filenameToAdd);

                        Uri zipPartUri = PackUriHelper.CreatePartUri(new Uri(destFilename, UriKind.Relative));

                        if (zipPackage.PartExists(zipPartUri))
                        {
                            zipPackage.DeletePart(zipPartUri);
                        }

                        PackagePart zipPackagePart = zipPackage.CreatePart(zipPartUri, "", CompressionOption.Normal);

                        using (FileStream fileStream = new FileStream(filenameToAdd, FileMode.Open, FileAccess.Read))
                        {
                            using (Stream dest = zipPackagePart.GetStream())
                            {
                                CopyStream(fileStream, dest);
                            }
                        }
                    }
                }
            }
            //Copy one stream data to another
            private static void CopyStream(Stream source, Stream target)
            {
                const int bufSize = 0x1000;
                byte[] buf = new byte[bufSize];
                int bytesRead = 0;
                while ((bytesRead = source.Read(buf, 0, bufSize)) > 0)
                    target.Write(buf, 0, bytesRead);
            }

    • Mesclado Cristopher C I_ sexta-feira, 19 de junho de 2015 19:23 Threads tratando do mesmo assunto
    segunda-feira, 1 de junho de 2015 21:47
  • Você está tentando acessar o direitório "C:" do servidor aonde está hospedado a aplicação.

    Isso está certo? possui essa permissão? existe esse arquivo no servidor?


    Uma imagem vale mais do que mil palavras, mas ocupa 3 mil vezes mais espaço em disco

    segunda-feira, 1 de junho de 2015 22:46
  • Ele funciona com uma quantidade menor de arquivos.

    ex:

    Todas as gravações do numero 37568877 , vai funcionar de boa.

    Se eu for pegar todas as ligações do dia que é uns 150 megas ele não funciona.

    Funciona local, mas publicado nao.

    terça-feira, 2 de junho de 2015 01:21
  • Como mencionei, ele esta tentando acessar o diretório C: do servidor hospedado e não local.


    Uma imagem vale mais do que mil palavras, mas ocupa 3 mil vezes mais espaço em disco

    terça-feira, 2 de junho de 2015 01:29
  • sim, mas como tinha falado antes, ele funcionava normal, antes de eu querer pegar por dia e nao por numero.

    se eu colocar por numero  vai funcionar.


    terça-feira, 2 de junho de 2015 12:23
  • Alguém aí ?

    estou precisando muito disto, estava lendo e vi alguns comentários dizendo que eu tinha que utilizar o dispose e outros o close no scream, mas não tive sucesso. 

    terça-feira, 2 de junho de 2015 14:28
  • Entendi.

    O Erro acontece logo de cara ou demora?

    Se estiver demorando esta perdendo a conecção não podendo mais acessar o stream, qual o tempo limite de conecção definida no servidor? 


    Uma imagem vale mais do que mil palavras, mas ocupa 3 mil vezes mais espaço em disco

    terça-feira, 2 de junho de 2015 19:00
  • Isso começou quando estava pegando arquivos de gravações por dia. Quando estava pegando por numero telefônico estava funcionando perfeitamente.

       for (int i = 0; dt2.Rows.Count > i; i++)
                {
                    string gravacao = dt2.Rows[i]["Gravação"].ToString();
                    string zipFilename = @"C:\GravaçãoTelecall\Gravações.zip";
                    string filenameToAdd = @"C:\GravaçãoTelecall\" + gravacao + "";


                    using (Package zipPackage = ZipPackage.Open(zipFilename, FileMode.OpenOrCreate))
                    {
                        string destFilename = ".\\" + Path.GetFileName(filenameToAdd);

                        Uri zipPartUri = PackUriHelper.CreatePartUri(new Uri(destFilename, UriKind.Relative));

                        if (zipPackage.PartExists(zipPartUri))
                        {
                            zipPackage.DeletePart(zipPartUri);
                        }

                        PackagePart zipPackagePart = zipPackage.CreatePart(zipPartUri, "", CompressionOption.Normal);

                        using (FileStream fileStream = new FileStream(filenameToAdd, FileMode.Open, FileAccess.Read))
                        {
                            using (Stream dest = zipPackagePart.GetStream())
                            {
                                CopyStream(fileStream, dest);
                            }
                        }
                    }
                }
            }
            //Copy one stream data to another
            private static void CopyStream(Stream source, Stream target)
            {
                const int bufSize = 0x1000;
                byte[] buf = new byte[bufSize];
                int bytesRead = 0;
                while ((bytesRead = source.Read(buf, 0, bufSize)) > 0)
                    target.Write(buf, 0, bytesRead);
            }

    terça-feira, 2 de junho de 2015 19:01
  •          

    Funciona local perfeitamente ai publicar ocorre o erro de framework 4.0

    onde encontro dll framework 4.0

        string diretorio = @"C:\GravaçãoTLC";//Caminho do diretório 
                string arquivo = @"C:\bila\Gravações.zip";//Caminho do arquivo zip a ser criado 

                ZipFile.CreateFromDirectory(diretorio, arquivo);

               
    quarta-feira, 3 de junho de 2015 11:29
  • Error !

    "System.IO.Compression.FileSystem" could not be resolved because it has an indirect dependency on the framework assembly "System.IO.Compression, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" which could not be resolved in the currently targeted framework. ".NETFramework,Version=v4.0,Profile=Client". To resolve this problem, either remove the reference "System.IO.Compression.FileSystem" or retarget your application to a framework version which contains "System.IO.Compression, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"

    quarta-feira, 3 de junho de 2015 11:42
  • Bom dia.

    Lucio, eu tenho essa DLL sendo que nao funciona quando é publicado.

    quarta-feira, 3 de junho de 2015 12:36
  • já está como Framework 4. 

    e já tentei sim colocar a dll manualmente, mesmo assim nao tive sucesso.

    quarta-feira, 3 de junho de 2015 13:03
  • Lucio, 

    Encontrei vários comentários com essa solução, mas trocar um sistema de 4.0 pra 4.5 pode acontecer de ocorrer erros.



    quarta-feira, 3 de junho de 2015 13:41
  • Alexsandro,

    Bom dia,

    Demora sim,  não sei o tempo definido, na pasta onde é salvo a pasta  zipada fica certo, só que ocorre esse erro. Como faço para definir esse tempo ?


    quarta-feira, 3 de junho de 2015 13:59
  • Segue o link de como alterar o limite para realizar o teste e verificar se soluciona o problema.

    http://www.iis.net/configreference/system.applicationhost/sites/sitedefaults/limits


    Uma imagem vale mais do que mil palavras, mas ocupa 3 mil vezes mais espaço em disco

    quarta-feira, 3 de junho de 2015 17:07
  • Alexsandro, infelizmente não obtive o sucesso esperado.

    não funcionou !

    quarta-feira, 3 de junho de 2015 17:40
  • utilizo visual 2010, não tem framework 4.5
    sexta-feira, 5 de junho de 2015 13:29
  • Sim, mas quando eu faço isso o ZipFile para de funcionar, estava vendo que essa dll só serve pra framework 4.5 e eu utilizo o 4.0 no VS 2010.


    sexta-feira, 5 de junho de 2015 14:06
  • Alguém tenha ideia oque seja isso para que eu possa pesquisar e procurar a solução.
    sexta-feira, 5 de junho de 2015 14:07
  • Lucio o meu real problema era tentar reduzir o tempo da minha consulta. 

                                     

    Como é feito o processo da consulta,  o processo loga em um servidor  Sftp   busca todas as ligações realizadas no dia X e baixa pra minha maquina(Servidor , armazenando em um pasta) pra depois zipar e jogar pra download.      

    Meu real problema é intender  o pq ocorre esse erro, funciona de boa local, mas quando é publicada ocorre esse erro.

    Can not access a closed Stream.


                for (int i = 0; dt2.Rows.Count > i; i++)
                {
                    string gravacao = dt2.Rows[i]["Gravação"].ToString();
                    string zipFilename = @"C:\GravaçãoTelecall\Gravações.zip";
                    string filenameToAdd = @"C:\GravaçãoTelecall\" + gravacao + "";


                    using (Package zipPackage = ZipPackage.Open(zipFilename, FileMode.OpenOrCreate))
                    {
                        string destFilename = ".\\" + Path.GetFileName(filenameToAdd);

                        Uri zipPartUri = PackUriHelper.CreatePartUri(new Uri(destFilename, UriKind.Relative));

                        if (zipPackage.PartExists(zipPartUri))
                        {
                            zipPackage.DeletePart(zipPartUri);
                        }

                        PackagePart zipPackagePart = zipPackage.CreatePart(zipPartUri, "",          CompressionOption.Normal);

                        using (FileStream fileStream = new FileStream(filenameToAdd, FileMode.Open, FileAccess.Read))
                        {
                            using (Stream dest = zipPackagePart.GetStream())
                            {
                                CopyStream(fileStream, dest);

                            }
                        }
                    }
                }
            }
            //Copy one stream data to another
            private static void CopyStream(Stream source, Stream target)
            {
                const int bufSize = 0x1000;
                byte[] buf = new byte[bufSize];
                int bytesRead = 0;
                while ((bytesRead = source.Read(buf, 0, bufSize)) > 0)
                    target.Write(buf, 0, bytesRead);

            }

      private void FullGravaçãoAudio()
            {
                string folder = Session["folder"].ToString();
                string musica = "Gravações.zip";
                string fName = @"C:\GravaçãoTelecall\" + musica + "";

                System.IO.FileInfo fInfo = new System.IO.FileInfo(fName);
                HttpContext.Current.Response.Clear();
                HttpContext.Current.Response.ContentType = "application/octet-stream";
                HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=\"" + fInfo.Name + "\"");
                HttpContext.Current.Response.AddHeader("Content-Length", fInfo.Length.ToString());
                HttpContext.Current.Response.Flush();
                HttpContext.Current.Response.WriteFile(fInfo.FullName);
                fInfo = null;

            }

     
    sexta-feira, 5 de junho de 2015 14:36
  • Lucio, no servidor funciona normalmente quando seleciona apenas um numero e baixa todas  as gravações, quando passei a buscar todas as gravações de todos os números por dia que começou esse erro.
    sexta-feira, 5 de junho de 2015 14:50
  • alguém ?
    segunda-feira, 8 de junho de 2015 12:32
  • Bom dia Jeff,

    Gostaria de saber se sua duvida ainda persiste ou não. Caso tenha resolvido seu problema poderia postar o que foi feito ?

    Caso contrario com a solução que o Alexandre postou o que obteve de erro em seu código, poderia postar por gentileza?

    Abraços


    Matheus Leopardi Mello Canelada Campos

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    TechNet Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    sexta-feira, 19 de junho de 2015 18:25