在Vista 64位上使用Visual Studio 2008,如果我创建一个看起来像这样的测试网站或Web应用程序......
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
OracleConnection connection;
connection = new OracleConnection("User Id=user;Password=userpass;Data Source=dataSource;");
connection.Open();
}
}
...并运行它,我收到以下错误。
ORA-12154: TNS:could not resolve the connect identifier specified
我知道关于parens的这个问题...... http://duanesbrain.blogspot.com/2007/01/ora-12154-using-c-with-microsoft-visual.html
Visual Studio 2008安装在Program Files(x86)中,但是另一个开发人员具有相同的设置,并且它适用于他。项目本身不在名称中包含parens的目录中。
我知道这不是我的tnsnames.ora或我的sqlnet.ora文件。我的机器设置方式与所有在这个项目上工作的开发人员的工作方式完全相同。
我也100%确定我使用的连接字符串是正确的。
如果我使用完全相同的代码创建一个控制台应用程序,它可以很好地连接。我可以ping oracle服务器并使用该连接字符串信息直接通过命令提示符连接。
另一件奇怪的事情是,如果我使用VS 2005(也安装在Program Files(x86)中)创建一个具有相同代码的Web应用程序或网站,它也能正常工作。
似乎仅限于使用VS 2008的网络应用程序和网站。
编辑:我应该补充一点,我的oracle文件夹目前拥有所有权限。
编辑: Oracle版本为10.2.0
编辑:感谢您的见解,我从来没有得到它的工作和其他开发人员,我认为建立一个XP vm工作会更快。几个小时后,我有一个设置,一切运行正常。
答案 0 :(得分:1)
这是否会在调试和释放模式下发生?您是否使用WebDev.WebServer.exe(casini)exe Web服务器或IIS来破坏网站。尝试切换到另一个。这只会在您调试或运行时发生吗?
也许这个网站是以不同的用户/流程运行的,而且这个帐户没有为oralce配置路径?
答案 1 :(得分:1)
我得到了同样的问题,经过几个小时!!! 发现Oracle安装的版本未更新。 我安装了10.2.0.4和Viola(在10.2.0.1上它不起作用!)一些Oracle Bug。
答案 2 :(得分:0)
我之前遇到过oracle home的问题。您是否可以检查并在必要时修改注册表以确保正确设置ORACLE_HOME。注册表路径是HKLM \ SOFTWARE \ ORACLE \
我有一个名为KEY_OraOdac11h_home1的密钥,ORACLE_HOME的值是我安装Oracle客户端的文件路径(C:\ Oracle \ product \ 11.1.0 \ client_1)
您还可以尝试使用值C:\ Oracle \ product \ 11.1.0 \ client_1添加系统环境变量ORACLE_HOME。
将文件路径更改为安装oracle客户端的位置。
答案 3 :(得分:0)
您看到的错误消息表明存在以下问题之一:您的tnsnames.ora文件,您的sqlnet.ora文件或您的数据源值。您应该检查这些文件的其他开发人员版本。
您是否尝试过使用EZCONNECT方法验证连接? (请参阅www.connectionstrings.com/oracle)您可能需要修改sqlnet.ora文件以启用EZCONNECT。
Data Source=username/password@myserver//instancename
答案 4 :(得分:0)
是64位/ 32位问题吗?您可以尝试将项目设置为构建32位,然后强制IIS进入32位模式。
答案 5 :(得分:0)
尝试通过.NET连接到Oracle时,我遇到了混合结果和奇怪的问题,通常这是一个奇怪的环境设置问题。
尝试此连接字符串(不使用tns文件,但在其中使用相同的详细信息)
数据源=(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = HOST IP)(PORT = 1521)))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = SERVICENAME)));用户ID = USERID;密码= PASSWORD;
这将让您开始了解连接到Oracle是否存在问题,或者您的TNS文件是否未正确解析。
您应该在SOFTWARE \ ORACLE \中有一些内容,例如HOME,ALL_HOMES,HOME0等,因为这是驱动程序识别您的oracle主页并注册TNS文件的方式。
我还会在你正在运行VS的开发盒上查看你的防火墙并检查你的dll引用以确保你使用相同的Oracle Dlls - 你也在使用MS oracle dlls或Oracle的那些?