Где / как просмотреть исходный код ODP. NET? - PullRequest
1 голос
/ 04 августа 2020

У меня есть программа, которую я тестирую, и я хочу просмотреть код «под капотом», в частности метод OpenWithNewPassword (возможно, придется нажать Ctrl + F на странице). Есть ли что-то похожее на Reference Source от Microsoft, которое предоставляет Oracle? Единственное, что я могу найти, это определение того, что это за метод и что он делает.

using System;
using Oracle.DataAccess.Client; 
 
class PasswordExpirationSample
{
  static void Main()
  {
    OracleConnection con = new OracleConnection();
 
    try
    {
      con.ConnectionString = 
        "User Id=testexpire;Password=testexpire;Data Source=oracle";
      con.Open();
      Console.WriteLine("Connected to Oracle" + con.ServerVersion);
    }
    catch (OracleException ex)
    {
      Console.WriteLine(ex.Message);
 
      //check the error number 
      //ORA-28001 : the password has expired
      if (ex.Number == 28001)
      {
        Console.WriteLine("\nChanging password to panther");
        con.OpenWithNewPassword("panther");  // What call is this making with the database?
        Console.WriteLine("Connected with new password.");
      }
    }
    finally
    {
      // Close and Dispose OracleConnection object
      con.Close();
      con.Dispose();
      Console.WriteLine("Disconnected");
    }
  }
}

1 Ответ

0 голосов
/ 04 августа 2020

Я могу только догадываться по причинам, указанным в комментариях

con.OpenWithNewPassword("panther");  // What call is this making with the database?

Вероятно, он принимает существующее соединение со всей его проанализированной строкой подключения и любым внутренним состоянием et c и изменяет только пароль , затем снова пытается установить соединение. Строка подключения содержит множество данных (пользователь, пароль, хост и т. Д. c), которые будут анализироваться и использоваться внутри на протяжении всего жизненного цикла объекта подключения. Может быть допустимый вариант использования, чтобы не делать все это снова, а просто изменить пароль и снова подключиться к базе данных. (Я лично не могу придумать ни одного, если только транзакции не сохранятся при циклическом подключении; я бы просто установил новое соединение с новым паролем)

По крайней мере, не нарушая лицензионного соглашения, вы вероятно, можно было бы использовать окно локальных переменных отладчика, чтобы посмотреть на ваше соединение с его внутренней переменной для хранения пароля (под узлом не-publi c members, потому что OracleConnection, похоже, не имеет свойства пароля publi c, как это делает другой материал), получите его хэш-код или значения скриншота и c, затем вызовите OpenWithNewPassword и посмотрите, изменится ли пароль, но все остальное останется таким же, как до открытия соединения .. Это было бы разумным показателем того, что он делает

...