c# - 异常详细信息 : System. InvalidOperationException: 'Microsoft.ACE.OLEDB.12.0' 提供程序未在本地计算机上注册

标签 c# database asp-classic hosting

<分区>

我一直在开发一个使用数据库的 ASP 网站。当我测试它时它可以离线工作,但是一旦我将它上传到我的 fasthosts 帐户,我在尝试运行它时就会收到以下错误:

异常详细信息:System.InvalidOperationException:“Microsoft.ACE.OLEDB.12.0”提供程序未在本地计算机上注册。

连接字符串如下:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ 
ConnectionStrings:ThreadString %>" ProviderName="<%$     
ConnectionStrings:ThreadString.ProviderName %>" SelectCommand="SELECT * FROM [Thread] 
WHERE ([rank] &lt;= ?) ORDER BY [rank]">

web.config 文件:

<add name="ThreadString" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data  
Source=|DataDirectory|\Database.accdb"  providerName="System.Data.OleDb" />

知道为什么会这样吗?提前致谢

最佳答案

连接到 ACCDB 文件(Access 2007 格式)需要 ACE.OLEDB.12.0 驱动程序。 此驱动需要安装在 ISP 机器上。
(这可能是他们要求您使用不同计划的原因)

但是,您可以将文件格式更改为使用 Microsoft.Jet.OLEDB.4.0 的 Access 2003,并且无需在 ISP 计算机上安装此驱动程序。

这是 Microsoft 网站上的一个文档,解释了如何操作。
Save an Access 2010 database in an earlier file format

但是还有一个问题。此驱动程序仅为 32 位,因此您的 ISP 应允许 32 位驱动程序在您站点的托管进程中运行(如果他们使用 64 位操作系统)。如何做到这一点取决于您的 ISP 工具和界面以及他们允许您个性化他们的服务的程度。

通常在本地 IIS 服务器上执行这些步骤

  • 转到 IIS 管理器
  • 右键单击 DefaultAppPool(或您的应用程序池)
  • 选择高级设置
  • 将“启用 32 位应用程序”设置为 True。

关于c# - 异常详细信息 : System. InvalidOperationException: 'Microsoft.ACE.OLEDB.12.0' 提供程序未在本地计算机上注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24203071/

相关文章:

javascript - 从不同的机器人访问 CosmosDB

mysql - Python Mange.py syncDB - 数据库错误

asp-classic - 如何从此 ADODB.Recordset 获取插入 ID?

asp-classic - JMail.SMTPMail 不工作 ("Microsoft VBScript runtime error ' 800a01ad' ActiveX 组件无法创建对象")

c# - 设置特定 session 的超时

c# - 尾部遵循特定模式的字符串的头部

c# - 在c#中如何区分拖放事件中的文件或文件夹?

c# - 在 JSON 中引用 C# 对象

数据库设计 : Running totals of row counts

asp.net - 我应该开始学习经典的 VB/ASP 还是 .NET?