IIS部署使用Localdb

本文详细记录了在IIS上部署使用Localdb的.NET Core项目过程,包括以文件系统方式发布项目,设置IIS应用程序池为LocalSystem并启用用户配置文件,赋予IIS_IUSERS网站权限,创建Localdb的IIS共享实例,以及配置数据库连接,确保顺利运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 前言

   在IIS中部署.Net Core项目,数据库使用Localdb,在部署过程中遇到不少问题,特此记录下来,分享给大家,同时方便以后查阅。首先,以文件系统的方式发布.Net Core项目。

  • 网站部署步骤

  • 在IIS中创建网站之后,设置网站对应的应用程序池(如:dyypm)信息如下:

重点注意标识为LocalSystem,并设置加载用户配置文件为True

  • 设置网站权限(如:dyypm),增加用户IIS_IUSERS
  • Localdb配置

  • 用管理员身份进入DOC命令窗口,创建Localdb的IIS共享实例,输入命令如下:
sqllocaldb share ProjectsV13 IIS_DB
  • 使用MSSMS工具,以Windows身份方式连接共享的LocalDB实例,如无法连接可以重启机器再试。
  • 新建查询窗口,创建应用程序池登陆用户,并授权该用户sysadmin角色,SQL脚本如下所示:

                
<think>我们正在解决“Microsoft.ACE.OLEDB.12.0提供程序未在本地计算机上注册”的问题。根据引用,这个问题通常发生在64位系统上,因为ACE OLEDB提供程序有32位和64位版本,如果应用程序的位数与安装的提供程序位数不匹配,就会报错。 引用[1]和[2]都提到了这个错误信息,引用[3]是一个解决方案的链接,引用[4]则提供了两种解决思路:一是安装对应位数的提供程序,二是将应用程序编译为32位并在IIS应用程序池中启用32位应用程序。 解决方案通常包括以下步骤: 1. 确认系统是否安装了Microsoft Access Database Engine。如果没有,则需要下载安装。 2. 注意安装的版本(32位或64位)必须与应用程序的位数匹配。如果应用程序是32位的,则需要安装32位的Access Database Engine;如果是64位的,则安装64位版本。 3. 如果已经安装了不匹配的版本,需要先卸载再安装匹配的版本。 4. 在IIS中,如果应用程序是32位的,需要在应用程序池中设置“启用32位应用程序”为True。 另外,引用[4]提到,有时在64位系统上运行32位应用程序时,即使安装了64位的ACE提供程序,也需要将应用程序池设置为启用32位,因为应用程序是32位的,需要32位的提供程序。 具体步骤: 步骤1:下载并安装Microsoft Access Database Engine 步骤2:检查应用程序的位数并确保与安装的ACE版本匹配 步骤3:对于IIS托管的应用程序,配置应用程序池 注意:在同一台机器上同时安装32位和64位的ACE提供程序是不被支持的,可能会导致冲突。因此,必须选择与应用程序匹配的版本。 下面详细说明解决方案。</think>### 解决 "Microsoft.ACE.OLEDB.12.0 提供程序未注册" 错误 此错误通常发生在应用程序位数与 ACE OLEDB 提供程序版本不匹配时。以下是已验证的解决方案: #### 🔧 核心解决方案(分步操作) 1. **安装匹配版本的 Access Database Engine** ```powershell # 64位系统运行32位应用 → 安装32位ACE https://www.microsoft.com/en-us/download/details.aspx?id=54920 # 64位应用 → 安装64位ACE https://www.microsoft.com/en-us/download/details.aspx?id=13255 ``` > 📌 注意:**不能同时安装32位和64位版本**,否则会引发冲突[^4] 2. **IIS 应用程序池配置(Web应用)** ```bash appcmd set apppool /apppool.name:YourAppPool /enable32bitapponwin64:true ``` - 此设置允许32位应用在64位系统运行 - 需重启IIS:`iisreset /restart` 3. **编译目标平台调整(应用程序)** - 在 Visual Studio 中: ```xml <Project> <PropertyGroup> <PlatformTarget>x86</PlatformTarget> <!-- 强制32位 --> </PropertyGroup> </Project> ``` #### ⚠️ 常见陷阱与验证 | 场景 | 解决方案 | 验证命令 | |------|----------|----------| | Office 冲突 | 卸载所有 Office 版本后重装 ACE | `Get-ItemProperty HKLM:\Software\Microsoft\Office\*` | | 注册表错误 | 运行 `aceprovider.reg` 修复注册 | `reg query "HKCR\CLSID\{3BE786A0-0366-4F5C-9434-25CF162E475E}"` | | Docker 环境 | 基础镜像添加:<br>`RUN apt-get install -y msaccess` | `ldd /usr/lib/libmsodbcsql-17.so` | #### 💡 替代方案(无需安装ACE) ```csharp // 使用 NPOI 读取 Excel(跨平台) using (var fs = new FileStream("data.xlsx", FileMode.Open)) { var workbook = new XSSFWorkbook(fs); // .xlsx var sheet = workbook.GetSheetAt(0); Console.WriteLine(sheet.GetRow(0).GetCell(0).StringCellValue); } ``` > ✅ 优点:无位数限制 | 支持 .xlsx/.xls | 免驱动安装[^3] #### 📊 版本兼容矩阵 | 系统架构 | 应用类型 | 所需 ACE 版本 | 有效解决方案 | |----------|----------|---------------|--------------| | Win64 | 32位应用 | ACE 32位 | 方案1 + 方案2 | | Win64 | 64位应用 | ACE 64位 | 仅方案1 | | Azure App Service | 任意 | N/A | 使用 NPOI/EPPlus | > ⚠️ **关键提示**:在服务器环境部署时,优先使用第三方库(如 NPOI)避免驱动依赖问题[^4]。若必须使用 OLEDB,需通过安装程序将 ACE 引擎加入服务器镜像。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值