在IIS上发布时出现EmguCV异常

时间:2017-06-28 06:08:25

标签: c# asp.net opencv iis emgucv

如果我在本地IIS上调试或运行它,我的ASP.NET应用程序工作正常。但是如果我将它发布到IIS上,看起来EmguCV就会失去它所需要的dll。我的VS项目的bin文件夹和IIS上的bin文件夹是相同的。

发生以下异常: ' Emgu.CV.CvInvoke'的类型初始值设定项抛出一个例外。 StackTrace:在Emgu.CV.CV.CvInvoke.cvCreateImageHeader(大小,IPL_DEPTH深度,Int32通道)的Emgu.CV.Image 2.AllocateData(Int32 rows, Int32 cols, Int32 numberOfChannels) at Emgu.CV.Image 2.set_Bitmap(Bitmap value)at CustomerserviceWizard.ImageHelper.DecodeUrl(LuminanceSource source,Bitmap bitmap) ,List`1方法)in:第213行

感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

好吧,经过大量的研究和白发后,我终于说服我的老板只使用台式电脑用EmguCV处理图像。 这个例外的(非常明显的)原因是服务器中缺少nVidia Cuda GPU。

答案 1 :(得分:2)

当我尝试在IIS上执行EmguCV时显示错误-Unable to load DLL 'cvextern': The specified module could not be found. (Exception from HRESULT: 0x8007007E)

例外-The type initializer for 'Emgu.CV.CvInvoke' threw an exception

就我而言,我通过为Windows服务器(在我的情况下为Windows Server 2012 R2)启用 UI桌面体验解决了此问题,因为Microsoft从未默认在Windows Server上启用该功能。


解决方案

对于 Windows Server 2008

  1. 转到开始>>管理工具>>服务器管理器。
  2. 在左侧窗格中,单击“功能”。在“功能摘要”部分下,单击“添加功能”。
  3. 在“选择功能”页面上,选中“桌面体验”复选框。
  4. 查看需要安装的必需功能,然后单击“添加必需功能”,再单击“下一步”。
  5. 在“确认安装选择”页面上,确保将安装Desktop Experience功能,然后单击“安装”。
  6. 在“安装结果”页面上,将要求您重新引导服务器以完成安装过程。
  7. 只需单击“关闭”,然后单击“是”以重新启动服务器。
  8. 服务器重新启动后,登录服务器,服务器将完成剩余的安装步骤。

对于 Windows Server 2012

  1. 转到开始>>管理工具>>服务器管理器。
  2. 在服务器管理器中,单击“功能”。
  3. 在“服务器管理器”详细信息窗格中的“功能摘要”下,单击“添加功能”。
  4. 这将启动“添加功能向导”。
  5. 现在,在“功能”列表中,选择“桌面体验”,然后单击“安装”。

希望此解决方案可以为您提供帮助:)

链接-Solution from GitHubDescription with screenshot

答案 2 :(得分:1)

我曾经遇到类似的问题,也许这有助于您的情况:请检查您的IIS应用程序池设置,并确保在“高级设置”下启用32位应用程序。