c# - studio - System.Runtime.InteropServices.COMException: nombre de archivo no válido en Crystal Report
guardar crystal report pdf c# (3)
Estoy usando Visual Studio 2010
con Crystal Report
. Está funcionando bien en mi servidor local pero en el servidor web, está dando error: System.Runtime.InteropServices.COMException: Invalid file name
.
Intenté muchas soluciones como poner el archivo .rpt
en cualquier carpeta y proporcionar esa ruta, otorgar permiso completo a la carpeta temporal de Windows, habilitar la ruta de acceso principal de IIS, etc.
Pero ninguno de ellos está funcionando. Por favor ayúdame a solucionar esto.
Mi ruta actual:
crystalReport.Load(Server.MapPath("~/PurchaseOrder1.rpt"));
No es una respuesta completa, pero soy demasiado nuevo para SO solo para comentar. Una cosa que podría intentar es descargar Process Monitor y observar para ver de dónde Crystal está tratando de cargar el archivo y eso puede ayudar. Process Monitor dará muchos resultados, pero se pueden filtrar, por ejemplo, parte del nombre del archivo. Puede decirle si hay un problema de permisos también. Lo encuentro muy útil para este tipo de situaciones en las que no se puede averiguar por qué no se encuentra un archivo.
Supongo que el culpable puede ser un seguimiento /
en la ruta del servidor web.
Intente usar Path.Combine(Server.MapPath("~"), "PurchaseOrder1.rpt");
Esto debería ponerle apropiado /
en el camino y podría solucionar tu problema.
Creo que la principal diferencia con el entorno local y de servidor es la raíz de IIS y el directorio virtual en el que se encuentra la aplicación.
Quiero decir, si el archivo está en la raíz del sitio, es posible que desee utilizar
crystalReport.Load(Server.MapPath("/PurchaseOrder1.rpt"));
O puede intentar colocar el archivo rpt en la misma carpeta con ViewPurchaseOrder.aspx
sin cambiar el código
Si no funciona, si pudieras compartir rutas (tanto físicas como virtuales) podemos verificar más.
* Editar: cuando se utiliza Server.MapPath
/
devuelve la raíz del sitio
~/
devuelve el directorio raíz de la aplicación
La diferencia es que si su sitio es:
http://yoursite.com Y tienes una aplicación en wwwroot/somedir/app
Entonces en tu "aplicación" ( http://yoursite.com/somedir/app )
/ debería devolver la raíz del sitio ( http://yoursite.com )
~ / debería devolver la raíz de la aplicación ( http://yoursite.com/somedir/ )