Discussion:
Abrir archivo desde ASP.Net que no está en el servidor web
(demasiado antiguo para responder)
Mookie
2009-10-13 12:32:58 UTC
Permalink
Hola buenas!!

Ando detrás del tema de abrir un fichero en ASP.NET que no está en el
servidor web.
Por una parte está el servidor web, y luego tenemos otro servidor con
archivos en su mayoría PDF.

Desde un aspx quisiera abrirlos y ando bastante perdido. Tengo una
pagina con el siguiente codigo:

Response.Clear()
Response.ContentType = "application/pdf"
Response.AddHeader("Content-Disposition", "attachment;
filename=" + "\\datos\ATJ\2.- OFERTAS\Java2.pdf")

Response.Flush()
Response.WriteFile(\\datos\ATJ\2.- OFERTAS\Java2.pdf)
Response.End()

El problema que tengo es que desde el entorno de desarrollo abre el
PDF correctamente, pero cuando lo publico no funciona y dice que está
dañado. No se, algo se me está escapando.

¿Alguna sugerencia?
Alberto Poblacion
2009-10-13 15:34:51 UTC
Permalink
Post by Mookie
[...]
El problema que tengo es que desde el entorno de desarrollo abre el
PDF correctamente, pero cuando lo publico no funciona y dice que está
dañado. No se, algo se me está escapando.
¿Cómo has configurado los permisos? En el entorno de desarrollo, usando
el servidor interno de Visual Studio, el code-behind de la página se ejecuta
con los permisos del usuario que está ejecutando el Visual Studio. Este
usuario eres tú mismo y probablemente tienes permisos para acceder a la
carpeta compartida del servidor donde están los archivos.
Pero cuando lo publicas en IIS, se ejecuta con la identidad del usuario
que tengas asignado para ejecutar asp.net, que si no lo has cambiado
probablemente será "Network Service", y este usuario lo más seguro es que no
tenga permisos sobre la carpeta compartida.
Una forma de cambiarlo consiste en configurar el web.config para que tu
página se ejecute con impersonación, poniéndole un <identity
impersonate="true" userName="..." password="..." />.
Otra forma consiste en impersonar por código a un usuario con permisos
adecuados en el momento de acceder al archivo. Si buscas en MSDN, hay un
artículo que tiene el ejemplo completo de cómo se impersona a un usuario
desde asp.net.
Luis Alberto Sanz
2009-10-19 07:34:51 UTC
Permalink
Hola, yo lo hago de la siguiente forma:

Protected Sub Descargar_Archivo(ByVal strArchivo As String)

If File_Exist_Server("http://www.xxxx.com/doc/" & strArchivo ) Then

Call abreVentana("http://www.xxxx.com/doc/" & strArchivo )

End If

End Sub

Protected Sub abreVentana(ByVal ventana As String)

Dim scriptString As String = "<script>window.open('" + ventana +
"','','toolbar=1,location=0,directories=0,status=1,menubar=1,scrollbars=1,resizable=1,channelmode=0,height=600,width=850,left=50,top=30')</script>"

If (Not ClientScript.IsClientScriptBlockRegistered("WOpen")) Then

ClientScript.RegisterStartupScript(GetType(String), "WOpen", scriptString)

End If

End Sub

Protected Function File_Exist_Server(ByVal Url As String) As Boolean

Dim req As HttpWebRequest = DirectCast(WebRequest.Create(Url),
HttpWebRequest)

req.AllowAutoRedirect = False

' In case the server is configured to redirect on 404

Try

' Get response from the server

Dim res As HttpWebResponse = DirectCast(req.GetResponse(), HttpWebResponse)

' Check response code

If res.StatusCode = HttpStatusCode.OK Then

'System.Diagnostics.Debug.WriteLine("file is accessable")

File_Exist_Server = True

Else

'System.Diagnostics.Debug.WriteLine("file is not accessable")

File_Exist_Server = False

End If

Catch ex As WebException

' Handle DSN error.

'System.Diagnostics.Debug.WriteLine("Name resolution error: " &
ex.ToString())

File_Exist_Server = False

End Try

End Function



"Mookie" <***@gmail.com> escribi� en el mensaje news:b42876d5-58e9-4a60-9bf6-***@k4g2000yqb.googlegroups.com...
Hola buenas!!

Ando detrás del tema de abrir un fichero en ASP.NET que no está en el
servidor web.
Por una parte está el servidor web, y luego tenemos otro servidor con
archivos en su mayoría PDF.

Desde un aspx quisiera abrirlos y ando bastante perdido. Tengo una
pagina con el siguiente codigo:

Response.Clear()
Response.ContentType = "application/pdf"
Response.AddHeader("Content-Disposition", "attachment;
filename=" + "\\datos\ATJ\2.- OFERTAS\Java2.pdf")

Response.Flush()
Response.WriteFile(\\datos\ATJ\2.- OFERTAS\Java2.pdf)
Response.End()

El problema que tengo es que desde el entorno de desarrollo abre el
PDF correctamente, pero cuando lo publico no funciona y dice que está
dañado. No se, algo se me está escapando.

¿Alguna sugerencia?
h***@gmail.com
2016-03-21 17:41:12 UTC
Permalink
Y como seria si tengo el archivo localmente en mi disco D

Loading...