我的C#Web API项目使用p / invoke调用本机Delphi DLL。
在将我的项目发布到Azure App Service Web应用程序之前,我的Windows 10开发计算机上的一切正常。
当从App Service调用DLL并尝试创建隐藏表单时,会发生访问冲突并且网站崩溃。 在下面的示例中,测试表单是一个空的Delphi VCL表单。
// Delphi XE2 DLL:
function TestFunc: Boolean; stdcall;
begin
Result := OpenTestForm(nil);
end;
function OpenTestForm(aOwner: TComponent): Boolean;
begin
frmTest := TfrmTest.Create(aOwner); // Access Violation here !!!
try
Result := True;
finally
frmTest.Free;
end;
end;
// C#
[DllImport("Test.dll", CallingConvention = CallingConvention.StdCall)]
public static extern bool TestFunc();
C#Web API项目:使用.NET Framework 4.5.1的.NET Core RC1(1.0.0-rc1-final)
Delphi XE2:32位DLL
在Windows 10(开发计算机)和Windows Server 2012 R2(Azure VM)上正常运行。 Azure App Service作为32位进程运行。