【问题标题】:How to enable reading C# Excel files on IIS (reading them locally on the machine where IIS is running works fine)?如何启用在 IIS 上读取 C# Excel 文件(在运行 IIS 的机器上本地读取它们工作正常)?
【发布时间】:2013-06-06 00:15:50
【问题描述】:

在 C#The 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine. 中读取 Excel 文件时遇到问题,'Microsoft.ACE.OLEDB.12.0' 也是如此。这只发生在我在 IIS 上运行我的应用程序时。 在运行 IIS 的机器上本地运行它可以正常工作。

有问题的机器在 Win2003 R2 Enterprise x64 上运行。我在VS2010,ASP.Net 4.0中开发。

看起来这个问题有两种解决方案:安装一些东西(首选)或切换到 32 位模式。我想了解这两种解决方案的含义,因为这些服务器上运行着其他应用程序,并且更改服务器需要大量时间并且非常痛苦。

  1. 安装Microsoft Access Database Engine 2010 Redistributable可以改变这种情况吗?也许我应该安装另一个版本/其他东西?来源:http://www.arboundy.com/2010/11/the-microsoft.ace.oledb.12.0-provider-is-not-registered-on-the-local-machine/
  2. 遵循http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/405f5bb5-87a3-43d2-8138-54b75db73aa1.mspx?mfr=true 上的说明是否意味着此服务器上的所有应用程序都将以32 位模式运行?如果我将应用程序的设置从 64 更改为 x86,是否有必要这样做?我当前的配置是“Any CPU”,如果我设置为 32 位会丢失什么?
  3. 编辑:似乎有第三种解决方案,将 dll 直接放在我的应用程序中。这是一个好的解决方案吗?应该是哪个dll?

【问题讨论】:

  • 据我所知,它只允许运行 32 位应用程序,它不会停止运行 64 位应用程序。此外,此设置处于应用程序池级别,因此您可以为该应用程序设置单独的应用程序池。

标签: c# excel iis connection-string 32bit-64bit


【解决方案1】:

您好,我目前正在一个项目中使用 Excel,据我所知,将 dll 添加到项目中很好,特别是如果您无法控制可以在服务器上安装的内容。我知道一个大型项目就是这样做的。 Microsoft 建议在部署服务器上安装 Excel 并使用 Interops,这听起来像是您正在尝试做的事情。

我无法将 excel 安装到我们的部署服务器上,因为我们必须与其他项目共享它,所以我使用了 EP Plus,它在 nuget 上可用,并且非常易于设置和使用。它用了不到一个小时就生成了 Excel 文件。它唯一的缺点是它只生成 xlsx 文件,这是一种较新的 excel 文件类型。

这是一种更简单的方法,它可能更容易并且适合您的项目。如果您想查看它,他们的网站上有大量示例代码。这只是您的另一种选择,希望对您有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-27
    • 1970-01-01
    • 2019-11-05
    相关资源
    最近更新 更多