FBO_85 0 Denunciar post Postado Maio 6, 2010 Fala galera, Estou com um problema aqui que esta me tirando do sério, desenvolvi uma aplicação na qual tenho de criar varios arquivos TXT, um para cada caso e isso em uma única chamada(no clique do botão), e não vai de jeito nenhum, o motivo pelo que vi é que a aplicação não tem acesso de criação/deletação na pasta onde ponho os TXT e não tenho como conseguir esta permissão. Então mudei para não gravar os arquivos no servidor, mas faço isso usando o Response, mas ele só me deixa criar um arquivo, no segundo ele me da um Exception avisando que o cabeçalho já foi enviado(???)!! Alguém já brincou com isso e tem alguma luz, pois não tenho mais ideia do que fazer, se preferirem eu posto os 2 códigos que utilizei para criar estes TXT. Valeu Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Maio 7, 2010 Poste o código e a mostre a linha onde da o erro. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
FBO_85 0 Denunciar post Postado Maio 18, 2010 Poste o código e a mostre a linha onde da o erro. Abraços... opa, apareceram outros pepinos e acabei deixando esta encrenca de lado, mas segue o código abaixo: #region -- Verifica a pasta onde será colocado os arquivos (Cria/Limpa) /* recupera o caminho onde salvará os arquivos */ DirectoryInfo di = new DirectoryInfo(this.Page.MapPath(@"TEMP_ENVIOS/")); /* verifica se a pasta existe, caso não exista a cria */ if (!di.Exists) di.Create(); /* verifica se há arquivos, caso haja deleta os anteriores a data de hoje */ FileSystemInfo[] fsi = di.GetFileSystemInfos(); for (int i = 0; i < fsi.Length; i++) if (fsi[i].CreationTime < DateTime.Now) fsi[i].Delete(); #endregion /* existe um for aqui no meio mto monstro, então nem vou postar, somente vou preencher as variáveis no qual irei usuar abaixo */ string strTitulo = "ArquivoTeste"; string strTexto = "TESTE CONTEUDO DO ARQUIVO TESTE CONTEUDO DO ARQUIVO"; /* ABAIXO É ONDE ESTA O GRANDE PROBLEMA */ string CaminhoArquivo = (this.MapPath(@"/TEMP_ENVIOS/") + @strTitulo + ".txt"); /* cria o arquivo */ FileInfo fiCriaArquivo = new FileInfo(CaminhoArquivo); fiCriaArquivo.Create(); //<<<<---- AQUI ESTA A ENCRENCA !!! FileInfo arquivo = new FileInfo(fiCriaArquivo.Name); /* abre o arquivo para inserção do texto */ using (StreamWriter sw = arquivo.CreateText()) { /* insere o texto no arquivo */ sw.WriteLine(strTexto); /* fecha o arquivo */ sw.Flush(); sw.Close(); /* abre o processo do arquivo criado na tela, mostra o arquivo na tela */ System.Diagnostics.Process.Start(arquivo.Name); } se alguem tiver alguma luz, eu vou agradecer e muito !!! valeu Compartilhar este post Link para o post Compartilhar em outros sites
sublyer 0 Denunciar post Postado Maio 18, 2010 Você está abrindo o arquivo no servidor? No caso de usar o response, coloque um response.End(); depois para que o processamento seja encerrado assim que o response seja realizado. Obs.: Posta a exception pra gente, que ajuda bem. :=D Atenciosamente Compartilhar este post Link para o post Compartilhar em outros sites
FBO_85 0 Denunciar post Postado Maio 18, 2010 Você está abrindo o arquivo no servidor? No caso de usar o response, coloque um response.End(); depois para que o processamento seja encerrado assim que o response seja realizado. Obs.: Posta a exception pra gente, que ajuda bem. :=D Atenciosamente então cara, ja tentei usar o response, o que ocorre é que quando eu abro somente um arquivo ele funfa, mas quando eu tento abrir mais que um, que é o meu caso, no segundo ele me retorna um erro de que o cabeçalho ja foi enviado! e quando eu uso o response.end() ele sempre me retorna este erro: Unable to evaluate expression because the code is optimized or a native frame is on top of the call stack.isso no primeiro arquivo que tento exportar, mas ele me mostra a tela para download no cliente, então eu acabo ignorando-o. se eu retirar o response.end() e utilizar o response.flush() ele passa sem erro, mas no segundo arquivo ele me retorna este outro erro: Servidor não pode anexar um cabeçalho após os cabeçalhos HTTP terem sido enviados.isso na linha: Response.AddHeader("Content-Disposition", "attachment; filename=nomearquivo.txt"); então resolvi abandonar o response e tentar da outra forma que mostro acima. Compartilhar este post Link para o post Compartilhar em outros sites