Вопрос:
Я использую System.Data.OracleClient.
System.Data.OracleClient требует OracleInstantClient, которые являются родными DLL.
Поэтому, чтобы использовать System.Data.OracleClient, мне нужно установить нативный dll или в папку в переменной окружения path.
Теперь основная проблема в том, что у меня нет прав администратора (корпоративный ноутбук - корпоративная глупость - не изменится) ...
Поэтому я ничего не могу ни установить, ни скопировать в папку в PATH, ни добавить папку в переменную окружения path, ни перезапустить / администрировать IIS или любую другую службу ...
Итак, в качестве теста я просто скопировал oci.dll и oraociei11.dll в ту же папку, что и WinForms .exe.
Это работало нормально. Мне удалось без проблем получить доступ к базе данных Oracle (SELECT * FROM COUNTRIES).
Но теперь мне нужно выполнить тот же запрос в решении ASP.NET.
Проблема заключается в том, что при выполнении ASP.NET библиотеки dll копируются во временную папку.
Теперь, чтобы получить DLL в корзину для веб-приложений,
в Global.asax в
public class MvcApplication : System.Web.HttpApplication
Я переписал Init с этим:
public override void Init()
{
int iBitNess = IntPtr.Size;
//System.Windows.Forms.MessageBox.Show(iBitNess.ToString());
// iBitNess = 4, so 32 bit dll's are right
string strTargetDirectory = System.Reflection.Assembly.GetExecutingAssembly().Location;
strTargetDirectory = typeof(DB.Abstraction.cDAL).Assembly.Location;
strTargetDirectory = typeof(MvcApplication).Assembly.Location;
strTargetDirectory = System.IO.Path.GetDirectoryName(strTargetDirectory);
string strSourcePath = Server.MapPath("~/bin/dependencies/InstantClient");
string[] astrAllFiles = System.IO.Directory.GetFiles(strSourcePath, "*.dll");
foreach (string strSourceFile in astrAllFiles)
{
string strTargetFile = System.IO.Path.GetFileName(strSourceFile);
strTargetFile = System.IO.Path.Combine(strTargetDirectory, strTargetFile);
System.IO.File.Copy(strSourceFile, strTargetFile);
}
base.Init();
} // End Sub Init
для того, чтобы скопировать нативные DLL в предположительно правильное местоположение.
Но я все еще получаю DllNotFound Exception ...
Где или как мне поставить собственную dll в приложении ASP.NET?
Я снова говорю: я не могу установить переменные окружения и не могу скопировать dll-файлы в папку, которая находится в пути. (которая обычно решает проблему).
Как вы видите с множественными вхождениями
strTargetDirectory =
Я пробовал несколько вариантов, ни один из которых не работал.