Я вызываю процедуру 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, но яЯ не уверен, что.