部署带MS Access数据库的ASP.NET应用的路径相关问题咨询
ASP.NET Access数据库部署路径问题排查与修复
你当前使用的硬编码本地绝对路径的连接字符串必然会在部署后触发数据库连接报错,核心问题和修复方案如下:
报错原因
- 路径不匹配:你代码里写的
C:\Users\Windows 10\Documents\Visual Studio 2012\Projects\ContactMvc\Weblogin.mdb是本地开发环境的专属路径,服务器不会存在完全一致的目录结构,IIS运行时找不到mdb文件会直接抛出OLEDB文件不存在异常。 - 权限不足:就算你在服务器上创建了完全相同的目录,IIS应用池的默认运行身份也没有权限访问
C:\Users下的普通用户目录,会触发权限不足类的连接错误。 - 驱动兼容风险:你用的
Microsoft.Jet.OLEDB.4.0是32位驱动,若服务器为64位系统且IIS应用池未开启32位兼容,即使路径正确也会报「提供程序未注册」错误。
修复步骤
- 将
Weblogin.mdb文件移动到ASP.NET项目的App_Data目录下,该目录是ASP.NET官方指定的应用数据存储目录,默认禁止外部直接访问,安全性更高。 - 替换连接字符串为相对路径写法,用
|DataDirectory|占位符自动映射App_Data目录的物理路径,修改后的连接字符串如下:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\Weblogin.mdb
- 部署到服务器后做两项配置校验:
- 给
App_Data目录赋予IIS应用池运行身份(通常为IIS_IUSRS用户组)的读取、修改权限 - 64位服务器需在对应IIS应用池的高级设置中开启「启用32位应用程序」选项,适配Jet 4.0驱动
- 给
内容的提问来源于stack exchange,提问作者kiyomi
相关产品推荐
相关产品推荐

