C# iisexpress.exe:仅在web应用程序中调用本机代码DLL时访问读取位置

C# iisexpress.exe:仅在web应用程序中调用本机代码DLL时访问读取位置,c#,asp.net,delphi,dll,C#,Asp.net,Delphi,Dll,我正在从asp.net应用程序调用本机代码dll(delphi)过程(无参数),并从iisexpress.exe获取[name].dll的“访问冲突读取位置”异常。该代码在Windows窗体应用程序中运行良好 我已经检查了可能的windows Bitness问题。Dll是在win64下构建的。Asp Web app和iis express设置也从应用程序属性设置为x64。排除了参数类型不兼容,因为过程是无参数的,并且也不返回任何内容。我还授予了“所有人”对dll的所有权限。调用相同dll的相同代

我正在从asp.net应用程序调用本机代码dll(delphi)过程(无参数),并从iisexpress.exe获取[name].dll的“访问冲突读取位置”异常。该代码在Windows窗体应用程序中运行良好

我已经检查了可能的windows Bitness问题。Dll是在win64下构建的。Asp Web app和iis express设置也从应用程序属性设置为x64。排除了参数类型不兼容,因为过程是无参数的,并且也不返回任何内容。我还授予了“所有人”对dll的所有权限。调用相同dll的相同代码在.net Windows窗体应用程序中有效。它也不能在Windows server IIS上工作

delphi dll本机代码:

procedure test()stdcall;
开始
结束;
出口
试验;
Asp.net c#代码调用DLL:

Winforms.net c#调用相同DLL的工作代码:

asp.net应用程序的例外情况: iisexpress.exe中0x000000000040D289(name.dll)处引发异常:0xC0000005:访问冲突读取位置0x000002756568CCB0


看起来它与IIS有关,因为它在Winforms应用程序上运行得非常完美,但我不确定是什么。

只是一个(非常)胡乱的猜测。尝试在DLL启动中添加
IsMultiThread:=True
:我还(认为我)读到64位Delphi DLL在DLL附加中有/d一些错误。我可能错了。尝试的
IsMultiThread
没有帮助。感谢windows服务器上运行的windows窗体应用程序是否也没有故障?或者您正在Windows10安装上测试winform应用程序?
[DllImport("name.dll", CharSet = CharSet.Unicode, 
           CallingConvention = CallingConvention.StdCall)]
public static extern void test();
protected void Page_Load(object sender, EventArgs e)
{           
     test();                       
}
[DllImport("name.dll", CharSet = CharSet.Unicode, 
           CallingConvention = CallingConvention.StdCall)]
public static extern void test();
private void button3_Click(object sender, EventArgs e)
{
     test();
}