- XperimentoS - http://www.xperimentos.com -

Error “System.Data.OleDb. OleDbException: Error no especificado” en ASP.NET al conectar con una base de datos con Microsoft Jet OleDb 4.0

Hay un curioso problema al intentar acceder a un Excel / Access en un servidor Web mediante OLEDB y ASP.NET. Es algo trivial, pero puede haceros perder mucho tiempo. El error se produce al llamar al método “Connection.Open” para abrir una connexion a un fichero Access o Excel con ASP.NET y OleDb. Hay dos posibles causas:

Primera causa: La cuenta ASP.NET/Impersonated no tiene suficientes permisos para crear el fichero ldb.

Segunda causa: La cuenta “Impersonated” no tiene suficientes privilegios para crear los ficheros temporales.
Cuando  abres un fichero Excel o Access usando Jet, require la creación de ficheros temporales. Con ASP.NET estos ficheros temporales serán creados en el directorio:

“C:\Documents and Settings\<NombreServidor>\ASPNET\Local Settings\Temp”

Por defecto la cuenta del usuario ASP.NET tiene completo acceso a este directorio. Sin embargo, cuando estas usando “impersonation”, esta cuenta no tendrá acceso por defecto. En consecuencia, el proceso Jet no tendrá acceso a crear ficheros temporales cuando abre una conexión a un fichero Access o Excel con ASP.NET. Debido a esto, OleBd lanza una excepción sin un mensaje específico: “System.Data.OleDb.OleDbException: Error no especificado” o en inglés “System.Data.OleDb.OleDbException: Unspecified error”.

Be Sociable, Share!
  • [2]
  • [3]
  • [4]
  • [5]