Ler arquivo PDF gravado no banco de dados, visualizá-lo na maquina cliente. O sistema está hospedado na WEB.

07/11/2019

2

Boa Noite! Parabéns pelo artigo!
Estou com um problema para exibir arquivos em PDF, Via asp.net utilizando c#
Consigo gravar perfeitamente no banco de dados, porém a leitura do arquivo em PDF não funciona.
Quando tento ler o arquivo gera este erro abaixo, é como se o sistema estivesse tentando executar um executável do windows.
Estou gravando os arquivos no banco de dados por motivo de segurança, porém não é este o caso, porque quando é no formato de imagem a mesma é exibida normalmente no gridview. Eu queria que os arquivos em PDF, fossem baixados para máquina do usuário ou que abrissem no navegador normalmente.

Desde já agradeço.
Lembrando que na minha maquina rodando o visual 2017 aspx.te C# funciona só não funciona com o sistema hospedado no provedor web.
System.ComponentModel.Win32Exception: Access is denied.


PARTE DO CÓDIGO QUE UTILIZO PARA LER O ARQUIVO

imagemdoc.ImageUrl = null;
Hashtable parametro = new Hashtable();
DataSet dtimagem = new DataSet();
MysqlConecta obj = new MysqlConecta();
parametro.Clear();
parametro.Add("@id", GridDocumentos.SelectedDataKey.Value);
dtimagem = obj.MyDadosDataset("select * from CLIENTEDOCUMENTACAO where IDDOCUMENTACAO =@id ", connectionString, parametro);
GridDocumentos.UseAccessibleHeader = false;
GridDocumentos.HeaderRow.TableSection = TableRowSection.TableHeader;
if (dtimagem != null)
{
string aux = dtimagem.Tables[0].Rows[0]["EXTESAO"].ToString().ToUpper().Trim();
byte[] bytes = (byte[])dtimagem.Tables[0].Rows[0]["IMAGEMDOCUMENTO"];
string base64String = Convert.ToBase64String(bytes, 0, bytes.Length);
string url = "data:image/png;base64," + base64String;
imagemdoc.ImageUrl = url;

int indice = aux.IndexOf("PDF");

btnexcluiarquivo.Visible = true;
if (indice >= 0)
{

var nomeArquivo = url;
var arquivoTemp = Path.GetTempFileName();
arquivoTemp = Path.ChangeExtension(arquivoTemp, Path.GetExtension(nomeArquivo));
File.WriteAllBytes(arquivoTemp, bytes);
Process.Start(arquivoTemp);


}
Responder