Вызов LoadLibrary из приложения MVC, работающего в IIS - PullRequest
1 голос
/ 28 марта 2011

У меня проблемы с выполнением этой строки кода в моем приложении MVC:

IntPtr hModule = LoadLibrary(BondProbeSettings.AssemblyFilePath);

Проблема в том, что hModule всегда 0.

Если я запускаю тот же код с тем же значением для BondProbeSettings.AssemblyFilePath, но из консольного приложения вместо приложения MVC hModule не равно нулю.

Есть ли какие-либо проблемы безопасности, которые мне нужно рассмотреть?

Подпись для LoadLibrary:

[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
static extern IntPtr LoadLibrary(string lpFileName);

Ответы [ 2 ]

3 голосов
/ 28 марта 2011

Измените объявление на:

[DllImport("kernel32.dll", CharSet = CharSet.Auto), SetLastError = true)]
static extern IntPtr LoadLibrary(string lpFileName);

А ваш код:

IntPtr hModule = LoadLibrary(BondProbeSettings.AssemblyFilePath);
if (hModule == IntPtr.Zero) throw new System.ComponentModel.Win32Exception();

Теперь вы поймете, почему оно не работает.

0 голосов
/ 28 марта 2011

Да, вам нужно запустить сборку сайта с полным доверием.Я не настроил это сам, но я считаю, что вам нужно:

  • для GAC DLL (имеется в виду, что он должен иметь строгое имя)
  • , чтобы, возможно, настроить пул приложений в IIS (при условииIIS), чтобы обеспечить полное доверие (?)

Я нахожусь на Linux, поэтому я не могу помочь вам со скриншотами прямо сейчас

...