MS Access Connection在本地工作但不在生产中工作

时间:2016-05-08 12:30:05

标签: c# asp.net-mvc-4 c#-4.0

作为一名MVC开发人员,我正在为学校创建一个应用程序,我有一个MS Access数据库,它位于我的应用程序内,位于app_data文件夹中。我在web.config文件中创建了连接字符串,如下所示

<add name="WMOERP1" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source='|DataDirectory|\Register.mdb'" providerName="System.Data.OleDb" />

它在我的本地系统中完美运行但是当我在生产中上传它时我得到了错误

  

“Microsoft.ACE.OLEDB.12.0”提供程序未在本地计算机上注册

请帮助我如何解决这个问题 我也尝试更改下面的连接字符串,你可以看到但仍然有问题

<add name="WMOERP1" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source='|DataDirectory|\Register.mdb'" providerName="System.Data.OleDb" />

请帮帮我。

1 个答案:

答案 0 :(得分:0)

使用Microsoft.JET.OLEDB.4.0的应用程序是以32位模式运行的应用程序。因此,您已将项目属性设置为以x86 CPU平台为目标,或者已将AnyCPU目标平台设置为Prefer 32bit标记。

在任何情况下,当您在IIS服务器64位上部署应用程序时,您应该通知IIS您要运行32位应用程序。

这样做将转至IIS配置程序,选择应用程序池,创建或突出显示应用程序将运行的应用程序池,然后在右键单击菜单上选择“高级设置”菜单。从那里将Enable 32 bit application标志设置为true。重启一切。

Here a description of the process带有一步一步的图片

当然,您可以保留原始的Microsoft.Jet.OLEDB.4.0连接字符串,因为此库与.NET Framework库一起部署,您不需要执行任何操作。
而是要更改为ACE.12.0,您需要安装库,并且作为您的应用程序是32位的,您需要安装32位版本的ACE。该错误似乎表明您已经安装了64位版本,因此32位应用程序没有ACE.12.0(不,您不能在同一台计算机上安装这两个ACE)