ASP.NET MVC应用程序无法使用非托管DLL

时间:2014-04-24 19:23:41

标签: .net iis unmanaged windows-server

我开发了一个我在发布模式下构建的Win32 C ++非托管DLL。我试图从IIS 8.5和Windows Server 2012 R2数据中心(Azure虚拟机)上运行的.net MVC应用程序中使用DLL。

我的开发机器上运行正常。但是,当我部署到服务器并尝试访问MVC站点时,我收到一条错误消息,指出未找到非托管DLL。为了纠正这一点,非托管DLL应该注册为IIS模块。所以我在IIS管理器中注册了模块但是现在当我尝试访问MVC网站时,我收到503 Service Unavailable响应,当我在IIS管理器中检查时,我可以看到应用程序池已经停止。

似乎只是在IIS中注册本机模块会导致应用程序池在MVC应用程序获得第一个请求时崩溃。我还将应用程序池设置为Enable 32bit Applications = true,因为DLL为32位。

我注意到在IIS事件日志中有一个事件5002 Error - Application pool 'DefaultAppPool' is being automatically disabled due to a series of failures in the process(es) serving that application pool

此外,当应用程序池停止时,我也不认为任何试图加载或访问非托管DLL的代码已经执行。似乎只是非托管DLL的注册阻止了MVC应用程序的启动。我试过注册一个非托管DLL只有最少量的代码(只有一个方法返回bool)我甚至没有从我的MVC应用程序引用这个DLL模块但仍然如果我注册这个基本的DLL IIS它阻止MVC应用程序启动并停止应用程序池。

可能是什么原因,我该如何解决这个问题?这可能与运行Windows Server 2012 R2数据中心是Azure虚拟机有关吗?

更新:Process Monitor屏幕截图。

Full size image 1

Full size image 2

0 个答案:

没有答案
相关问题