none
Duda sobre permisos del IIS para abrir archivos y base de datos RRS feed

  • Pregunta

  • Buena noches, compañeros me ha surgido una duda respecto a la ejecución y apertura de archivos(en concreto de office Word,excel,pdfs) cuando la aplicación será montada en un IIS 8, dado que la aplicación en ambiente de desarrollo me permite abrir dichos documentos por medio de la instrucción System.Diagnostics.Process.Star() y el objetivo era poder abrir dichos documentos que son almacenados en carpetas del servidor para sus posterior consulta. Sin embargo veo que estando en IIS no basta con Process.Star(), tendría que hacer uso de impersonate ? o abra otra manera de lograrlo ? o que sugerencia me darían.

    gracias


    La programacion en Microsoft cada ves se torna inalcanzable

    martes, 20 de agosto de 2019 2:57

Respuestas

  • lo que requiere el cliente es que al dar click en un vinculo, pueda abrir sus documento(ya sea un word,un excel o pdf

    Entonces no puedes usar Process.Start. Esto inicia un proceso en la misma maquina en la que se esta ejecutando el codigo, que en este caso es el servidor. Obviamente, el cliente no quiere que el documento se vea en la pantalla del servidor (de hecho, lo mas normal es que el servidor ni siquiera tenga pantalla), sino en la pantalla del PC en el que esta navegando.

    Para conseguir esto, lo que se hace es transmitir los bytes del fichero en el Response, a la vez que se agrega el tipo MIME del documento en las cabeceras HTTP para indicarle al navegador que debe abrir el documento con el programa correspondiente instalado en local. Mas o menos tendra un aspecto similar a este:

    Response.ContentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; // Poner aqui el tipo MIME del fichero
    Response.AppendHeader("Content-Disposition", "inline; filename=" + Path.GetFileName(rutaDeTuFichero));
    Response.WriteFile(rutaDeTuFichero);
    Response.End();
    

    martes, 20 de agosto de 2019 15:55

Todas las respuestas

  • hola

    porque necesitas abrir un documento en el servidor usando Process.Star() ? eso no esta bien

    Recuerda que el documento se habre en el servidor, no en el cliente, quedando el proceso bloqueando en el servidor web

    No se que es lo que quieres lograr, pero esta claro que el camino que planteas no es correcto en un desarrollo web, si vas a editar un documento usa librerias basadan en open xml ya que las API COM de office no son recomendables

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 20 de agosto de 2019 3:47
  • hola

    porque necesitas abrir un documento en el servidor usando Process.Star() ? eso no esta bien

    Recuerda que el documento se habre en el servidor, no en el cliente, quedando el proceso bloqueando en el servidor web

    No se que es lo que quieres lograr, pero esta claro que el camino que planteas no es correcto en un desarrollo web, si vas a editar un documento usa librerias basadan en open xml ya que las API COM de office no son recomendables

    saludos


    Leandro Tuttini

    Blog
    MVP Profile

    Que tal Ing., no se si sea correcto o no, pero lo que requiere el cliente es que al dar click en un vinculo, pueda abrir sus documento(ya sea un word,un excel o pdf). éste vinculo está en un gridview, no voy a editar nada es solo abrirle el documento. Cabe mencionar que en las máquinas del usuario ya está instalado el office y un visor para pdf

    La programacion en Microsoft cada ves se torna inalcanzable


    martes, 20 de agosto de 2019 15:31
  • lo que requiere el cliente es que al dar click en un vinculo, pueda abrir sus documento(ya sea un word,un excel o pdf

    Entonces no puedes usar Process.Start. Esto inicia un proceso en la misma maquina en la que se esta ejecutando el codigo, que en este caso es el servidor. Obviamente, el cliente no quiere que el documento se vea en la pantalla del servidor (de hecho, lo mas normal es que el servidor ni siquiera tenga pantalla), sino en la pantalla del PC en el que esta navegando.

    Para conseguir esto, lo que se hace es transmitir los bytes del fichero en el Response, a la vez que se agrega el tipo MIME del documento en las cabeceras HTTP para indicarle al navegador que debe abrir el documento con el programa correspondiente instalado en local. Mas o menos tendra un aspecto similar a este:

    Response.ContentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; // Poner aqui el tipo MIME del fichero
    Response.AppendHeader("Content-Disposition", "inline; filename=" + Path.GetFileName(rutaDeTuFichero));
    Response.WriteFile(rutaDeTuFichero);
    Response.End();
    

    martes, 20 de agosto de 2019 15:55
  • Entonces no puedes usar Process.Start. Esto inicia un proceso en la misma maquina en la que se esta ejecutando el codigo, que en este caso es el servidor. Obviamente, el cliente no quiere que el documento se vea en la pantalla del servidor (de hecho, lo mas normal es que el servidor ni siquiera tenga pantalla), sino en la pantalla del PC en el que esta navegando.

    Para conseguir esto, lo que se hace es transmitir los bytes del fichero en el Response, a la vez que se agrega el tipo MIME del documento en las cabeceras HTTP para indicarle al navegador que debe abrir el documento con el programa correspondiente instalado en local. Mas o menos tendra un aspecto similar a este:

    Response.ContentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; // Poner aqui el tipo MIME del fichero
    Response.AppendHeader("Content-Disposition", "inline; filename=" + Path.GetFileName(rutaDeTuFichero));
    Response.WriteFile(rutaDeTuFichero);
    Response.End();
    

    Le agradezco, Sr. Poblacion, justo lo que buscaba

    La programacion en Microsoft cada ves se torna inalcanzable

    miércoles, 21 de agosto de 2019 4:48