未找到数据源名称且未指定默认驱动程序

我被要求将使用MVP模式的WinForms应用程序移植到网页上。 除其他外,该应用程序将CSV文件上传到DataTable,然后执行一些操作。

CSV文件上传到服务器确定,然后使用以下代码读取

string connectionString = @"Driver={Microsoft Text Driver (*.txt; *.csv)};Extensions=asc,csv,tab,txt;Persist Security Info=False;Dbq=C:\Temp\"; //check that file exists and in correct format if (File.Exists(this.WorkingFileName)) { using (OdbcConnection connection = new OdbcConnection(connectionString)) { // Determine number of rows string selectCount = "select count(*) from [MyFile.csv]"); using (OdbcCommand command = new OdbcCommand(selectCount, connection)) { connection.Open(); } } } 

此时我收到错误:

错误[IM002] [Microsoft] [ODBC驱动程序管理器]未找到数据源名称且未指定默认驱动程序

现在,代码在WinForms中运行良好,但在Web上失败。 有什么我需要在IIS,我的配置文件或其他东西中更改以使此代码工作? 或者我需要做一些更基本的事情吗?

更新

好的,所以我找出了我的两个代码版本之间的不同之处:WinForms版本运行为32位,一旦我将其更改为64位,它就会抛出相同的错误。 请参阅: Windows 7上的64位应用程序中的32位文本驱动程序(Microsoft Access,Microsoft Excel和文本文件)

为了解决问题,我从http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=13255安装了Access 64位驱动程序,但我仍然遇到同样的错误。

如果我检查我的ODBC数据源管理员,我可以看到“Microsoft Access文本驱动程序(* .txt,* .csv)| 14.00.47600.1000 | Microsoft Corporation | ACEODBC.dll

所以看起来它们安装好了,为什么它仍然会失败?

好的,我发现了问题。 只是总结一下我解决方案的所有部分。

  1. 卸载任何32位Office应用程序(步骤2所需)
  2. 安装Access 64位驱动程序
  3. 重新安装任何32位Office应用程序
  4. 更改两个位置的连接字符串,如下所示:

    @“Driver = {Microsoft Access Text Driver(* .txt,* .csv)}; Extensions = asc,csv,tab,txt; Persist Security Info = False; Dbq = C:\ Temp \”

注意:

  1. 驱动程序名称已更改为Microsoft Access Text Driver
  2. 文件扩展名的分隔符已从分号更改为逗号

我没有发现导致我很多痛苦的逗号变化:-(

这可能是由于网络服务器没有安装Jet库,我相信它提供了文本驱动程序。 它可能是由于MS Office的到来而在本地安装的(再次,我相信是这种情况)

连接字符串是否形成良好? 似乎dbq参数是错误的。

 "Driver={Microsoft Text Driver (*.txt; *.csv)};Extensions=asc,csv,tab,txt;Persist Security Info=False;Dbq=**C:Temp\\**" 

另请查看此链接 ,提供有用的连接字符串示例