I'm connecting using direct mode, and my connection string looks like this:
I know that's ok, because I have integration tests that run, as well as using this locally, and it works fine. I don't have Oracle Client installed anywhere.User Id=UID;Password=PWD;Server=SERVER.LOCAL.PATH;Connection Timeout=60;Default Command Timeout=60;Direct=True;Sid=SERVERID;Port=1521
So, to explain how we're using it...
I've created a "wrapper" project, that exposes functionality that enables other apps to get data from the Oracle Database, but only this project needs the Devart Oracle DLLs. This Wrapper project has an integration test, and I installed dotConnect Trial on the build server, the same as I have on my machine. I'm using a trial license, while I wait on the real license purchase. Anyway, the Integration Test against Wrapper has a call to the Oracle database, and the test passes.
So, then I have a large solution, we'll call Ops, which includes an MVC web project (OpsWeb), a class library (OpsData), and another Integration Test project (OpsDataIntegrationTest). OpsData has a reference to the Wrapper DLL, which is already compiled, and does not have or need the Devart DLLs. OpsWeb has a reference to the OpsData project, to get data. I can build and run this just fine locally. When I deploy this, the test, which does make a call to the Oracle database, passes.
However, when I access OpsWeb in the lab environment, I'm getting the error:
Can you help me determine what I'm doing wrong?System.InvalidOperationException: Can not obtain Oracle client information from registry. Make sure that Oracle Client Software is installed, or use Direct mode of connecting to server.
Ok, so I forgot that we're doing this new tokenized config thing, and it had been set up for a different version of the connection string, that didn't include direct=true, so when it deployed, the connection string was wrong. So, this is resolved.