我在我的web应用程序中调用非托管dll并且它的工作正常但是如果我在IIS中运行Web应用程序,则在调用dll函数时会崩溃。我无法捕获异常,只有ie错误消息“页面无法显示”,并且在事件查看器中出现错误:
Faulting application name: w3wp.exe, version: 7.5.7601.17514, time stamp: 0x4ce7a5f8 Faulting module name: ntdll.dll, version: 6.1.7601.17514, time stamp: 0x4ce7ba58 Exception code: 0x4000001f Fault offset: 0x000ce625 Faulting process id: 0x2084 Faulting application start time: 0x01cc9eb290740fe8 Faulting application path: C:\Windows\SysWOW64\inetsrv\w3wp.exe Faulting module path: C:\Windows\SysWOW64\ntdll.dll Report Id: e0fc374f-0aa5-11e1-88bd-00224d5137ef
IIS设置: 启用32位应用程序:正确 管理管道模式:已整合 身份:LocalSerice(尝试每个选项)
我正在使用Windows 7和C#VS2010 Framework 4.0
答案 0 :(得分:2)
试试这个,
用
包装函数调用try {
// Call your delphi dll function here
} catch {
Console.WriteLine("error");
}
现在在Console.WriteLine
部分设置断点。
通过使Visual Studio通过IIS(而不是VS开发Web服务器)运行应用程序来调试应用程序。
当您在catch块内点击断点时,转到Watch Window
并检查$exception
变量中存储的内容。
这可以为您提供更多线索。
答案 1 :(得分:0)
尝试创建STA线程并通过它与托管dll进行通信。 检查this article。