iisexpress.exe: место чтения нарушения доступа при вызове библиотеки DLL собственного кода только в веб-приложении - PullRequest
2 голосов
/ 23 октября 2019

Я вызываю процедуру dll (delphi) для собственного кода (без параметров) из приложения asp.net и получаю исключение «Место чтения нарушения доступа» из iisexpress.exe для этого [name] .dll. Код прекрасно работает в приложении Windows Forms.

Я проверил возможные проблемы с битностью Windows. Dll построен под win64. Настройки Asp Web app и iis express также установлены на x64 из свойств приложения. Несовместимость типов параметров исключается, поскольку процедура не содержит параметров и также ничего не возвращает. Я также дал «Все» все разрешения для DLL. Тот же код вызова той же самой DLL работает в приложении .net Windows формы. Он также не работает на IIS сервера Windows.

Собственный код delphi dll:

procedure test() stdcall;
begin       
end;

exports 
  test;

Код Asp.net c #, вызывающий DLL:

[DllImport("name.dll", CharSet = CharSet.Unicode, 
           CallingConvention = CallingConvention.StdCall)]
public static extern void test();
protected void Page_Load(object sender, EventArgs e)
{           
     test();                       
}

Winforms.net c # рабочий код, вызывающий ту же DLL:

[DllImport("name.dll", CharSet = CharSet.Unicode, 
           CallingConvention = CallingConvention.StdCall)]
public static extern void test();
private void button3_Click(object sender, EventArgs e)
{
     test();
}

Исключение, которое я получаю для приложения asp.net: Исключение, выданное 0x000000000040D289 (name.dll) в iisexpress.exe: 0xC0000005: Место чтения нарушения прав доступа 0x000002756568CCB0.

Похоже, что это как-то связано с IIS, так как он отлично работает с приложением Winforms, но яЯ не уверен, что.

...