【发布时间】:2011-07-30 00:01:41
【问题描述】:
我在使用 IIS 的 ODBC 连接时遇到了一些问题。
这是我的配置:
- Windows XP 上的 IIS 5
- ASP.NET 2.0
- 甲骨文 9
- VS 2005
当我尝试在 IIS 上使用我的 Web 应用程序时,我遇到了以下异常:
错误 [IM002] [Microsoft][ODBC 驱动程序管理器] 未找到数据源名称且未指定默认驱动程序
但是,当我在VS2005中像网站一样使用它时,我没有任何错误。
所以,我会尝试使用以下代码制作一个非常小的应用程序:
using System;
using System.Data;
using System.Data.Odbc;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
OdbcConnection con = new OdbcConnection();
con.ConnectionString = "DSN=<MyDSN>;Uid=<LOGIN>;Pwd=<PASSWORD>";
IDbCommand com = new OdbcCommand();
com.CommandText = "select sysdate from dual;";
com.CommandType = CommandType.Text;
com.CommandTimeout = 30;
com.Connection = con;
try
{
con.Open();
Response.Write(com.ExecuteScalar());
}
finally
{
if (con.State == ConnectionState.Open)
con.Close();
}
}
}
它在 VS 的 Web 服务器上运行良好(即:http://localhost:3715/Web/Default.aspx),但我在 IIS 上使用它时遇到了同样的异常(IM002)(即:http://localhost/Tester/default.aspx)。
我的 DSN 在“ODBC 数据源管理器”中声明,并且在我测试连接时运行良好……
ASPNET 帐户与我的用户帐户(管理员)在同一个组中。
HKEY_LOCAL_MACHINE\SOFTWARE\ODBC 和 ASPNET 帐户的完整权利
HKEY_CURRENT_USER\Software\odbc 键。
我读过这个post,但没有任何作用......
我会在 stackoverflow(搜索、相关问题等)、谷歌上寻找答案……但我没有找到可行的解决方案……
有没有人有想法?...
我的错在哪里?...
更新:2011/04/06
到目前为止我做了什么:
- 跟踪 ODBC:在 VS 的 Web 服务器上,我得到了日志;但在 IIS 上,没有...
- 系统和用户 DSN 填写相同的信息
- 允许 ASPNET、IUSR_XXX、IWAN_XXX 和所有用户(原文如此……)帐户拥有以下权限:%ORACLE_HOME%、HKEY_LOCAL_MACHINE\SOFTWARE\ODBC、HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE
Windows、VS 和 IIS 都是 32 位的(因此,没有 c:\windows\syswow64)。
检查 PATH 值,并将 %ORACLE_HOME% 放在首位。
每次我进行修改时都会重置 IIS,我的计算机会重新启动两次。
但是,现在,我收到了这条消息:
错误 [IM003] 由于系统错误 998 (Oracle dans OraHome92),无法加载指定的驱动程序。
我终于找到了...
管理员已安装所有驱动程序,仅供用户使用...
我会创建一个系统环境变量 ORACLE_HOME...
只有一个用户 var :s
感谢您的帮助。
由于系统/用户之间的差异,我验证了 Garry M. Biggs 的答案......
【问题讨论】:
标签: visual-studio-2005 odbc c#-2.0 oracle9i iis-5