ManagedDataAccess Method OpenWithNewPassword not working [message #668800] |
Thu, 15 March 2018 03:03 |
|
David_L
Messages: 3 Registered: March 2018
|
Junior Member |
|
|
I know this problem from the normal Oracle client (oci). Here the change expired password doesn`t work with certain combinations of Oracle client and Oracle Server. We see this problem for years and with several combinations of client and server. It seems that it allways fails when the Oracle client has a higher version than the server, but there is no strict rule to reproduce... but if the combination is odd it never works.
Now with the managed data access for .NET I was hoping this problem is solved for all times. But I tried to implement the functionality yesterday and I ran into the same issue again...
Problme is: Connection.Open works for all users (connection string is ok). When password is expired Connection.Open throws an Exception with ORA-28001. Then I call Connection.OpenWithNewPassword (with the same connection string and a new password as parameter of OpenWithNewPassword) and this ALLWAYS throws an exception with ORA-01017! -> NO SOLUTION
The calls stack of the exception shows that the client seems to try to change the password and oracle server has a problem (same like in old oci times):
System.Reflection.TargetInvocationException: Ein Aufrufziel hat einen Ausnahmefehler verursacht. ---> Oracle.ManagedDataAccess.Client.OracleException: ORA-01017: Benutzername/Kennwort ungültig; Anmeldung abgelehnt
bei OracleInternal.ConnectionPool.PoolManager`3.CreateNewPR(Int32 reqCount, Boolean bForPoolPopulation, ConnectionString csWithDiffOrNewPwd, CriteriaCtx criteriaCtx, String instanceName, List`1 switchFailedInstNames)
bei OracleInternal.ConnectionPool.PoolManager`3.GetUsingDiffPassword(ConnectionString csWithDiffOrNewPwd, CriteriaCtx criteriaCtx)
bei OracleInternal.ConnectionPool.OraclePoolManager.GetUsingDiffPassword(ConnectionString csWithDiffPassword, CriteriaCtx criteriaCtx)
bei OracleInternal.ConnectionPool.OracleConnectionDispenser`3.Get(ConnectionString cs, PM conPM, ConnectionString pmCS, SecureString securedPassword, SecureString securedProxyPassword, CriteriaCtx criteriaCtx)
bei Oracle.ManagedDataAccess.Client.OracleConnection.Open()
bei Oracle.ManagedDataAccess.Client.OracleConnection.OpenWithNewPassword(String newPassword)
--- Ende der internen Ausnahmestapelüberwachung ---
bei System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
bei System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
bei System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
bei System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
bei CreateCtrl.NH.Service.Base.RealDbUserLogin(String userName, String password, String newPassword)
I use the latest Oracle.ManagedDataAccess V4.122.1.0 (runtime version v4.0.30319). I have several customer databases which I have to access and I have no influence on the version installed. There are several servers with V11 and V12 in diferent versions.
Shouldn`t there be a solution for all Oracle server versions without dealing with different client versions? Especially since there are no Oracle version dependant ManagedDataAccess versions...
Please help me...
[Updated on: Thu, 15 March 2018 03:05] Report message to a moderator
|
|
|
|
|