ASP.NET 中,连接 Access 时,遇到: OleDbException (0x80004005): 未指定的错误的错误,英文为: OleDbException (0x80004005): Unspecified error
情况一: ASP.NET 帐户或模拟帐户没有在 Access 文件所有文件夹生成 .ldf 文件的权限。
情况二: 如果你使用的是模拟帐户,你需要给 C:\Documents and Settings\MachineName\ASPNET\Local Settings\Temp 赋完全权限。 以下是微软官方的解决方案,希望对你也能有所帮助: OleDbException (0x80004005):未指定的错误
症状 如果以下所有条件都成立可能收到错误信息:
• 在默认 ASPNET 帐户运行 ASP.NET 工作进程 (Aspnet _ wp.exe)。 • 不启用模拟应用程序上。
• SQLServer.NET 数据提供程序或 OLEDB .NET 数据提供程序用于连接到数据库。 您可能收到以下错误信息之一: 消息
1 OleDbException (0x80004005): [ DBNETLIB ] ] [ ConnectionOpen (Connect())。 没有 SQLServer 或访问拒绝 ]。
2 SqlException (0x80004005): [ DBNETLIB ] ] [ ConnectionOpen (Connect())。 没有 SQLServer 或访问拒绝 ]。
3 System.Data.SqlClient.SqlException: SQLServer 不存在或拒绝访问 消息
4 System.Data.OleDbClient.OleDbException: SQLServer 不存在或拒绝访问
原因 当如果您没有启用模拟为应用程序, ASP.NET 辅助进程在 ASPNET 帐户, 运行所有线程运行对应用程序请求在进程帐户运行。 ASPNET 帐户无法建立命名管道连接到数据库服务器。
解决方案 要解决此问题, 使用下列方法之一: • 打开您 ASP.NET 应用程序上模拟。 如果模拟用户具有到数据库服务器, 您访问到计算机和访问该方法效果。 • 使用传输控制协议 / Internet 协议 (TCP/IP) 代替命名管道协议来连接到数据库。 为了连接字符串这样, 添加下列属性: "Network Library =dbmssocn" 例如:"User ID=myUserId;Password=myPassword;Initial Catalog=Pubs;Data Source=myServer;Network Library =dbmssocn" • 检查数据库是否启用该协议。 对于 SQLServer 数据库, 运行 SQLServer 网络实用工具要检查特定协议。
参考 有关安全性, 请单击下列文章编号以查看 Microsoft 知识库中相应: 306590 (http://support.microsoft.com/kb/306590/) ASP.NET 安全性概述 有关 <processModel> 节, 的详细信息请参阅到以下 MSDN 文档: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/gngrfprocessmodelsection.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/gngrfprocessmodelsection.asp)