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?
�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.
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" <mook...@gmail.com> escribi� en el mensaje
news:b42876d5-58e9-4a60...@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?