Usuário com melhor resposta
Não é possível acessar um fluxo fechado. AspNet

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 !
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".- Sugerido como Resposta CarlosEduardo Ferreira sexta-feira, 19 de junho de 2015 20:40
- Marcado como Resposta Jeff Valentim sábado, 20 de junho de 2015 15:25
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
-
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
-
-
-
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.
- Editado Jeff Valentim terça-feira, 2 de junho de 2015 13:14
-
-
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
-
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);
} -
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);- Mesclado Matheus L. M. C. Campos sexta-feira, 19 de junho de 2015 18:27 Varias threads sobre o mesmo erro
-
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"
-
-
-
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.
- Editado Jeff Valentim quarta-feira, 3 de junho de 2015 13:45
-
-
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
-
-
-
-
-
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;
} -
-
-
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.