在 IIS 上发布时出现 EmguCV 异常
EmguCV Exception when published on IIS
如果我在本地 IIS 上调试或 运行 我的 ASP.NET 应用程序工作正常。但是,如果我将它发布到 IIS 上,EmguCV 似乎会丢失它需要的 dll。我的 VS 项目的 bin 文件夹和 IIS 上的 bin 文件夹是相同的。
出现以下异常:
'Emgu.CV.CvInvoke' 的类型初始值设定项引发异常。
StackTrace:在 Emgu.CV.CvInvoke.cvCreateImageHeader(大小,IPL_DEPTH 深度,Int32 通道)在 Emgu.CV.Image2.AllocateData(Int32 rows, Int32 cols, Int32 numberOfChannels) at Emgu.CV.Image
2.set_Bitmap(位图值)在 CustomerserviceWizard.ImageHelper.DecodeUrl(LuminanceSource源、位图位图、List`1 方法)在:第 213 行
感谢任何帮助。
我曾经遇到过类似的问题,也许这对您的情况有帮助:请检查您的 IIS 应用程序池设置并确保在 "Advanced Settings".
下启用 32 位应用程序
好吧,经过大量的研究和白发,我终于说服了我的老板只使用台式电脑来使用 EmguCV 处理图像。
异常的(非常明显的)原因是服务器中缺少 nVidia Cuda GPU。
当我尝试在 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 服务器启用 UI 桌面体验 解决了这个问题(在我的例子中 - Windows Server 2012 R2) 因为 Microsoft 从未默认在 Windows 服务器上启用该功能。
解决方案
对于 Windows 服务器 2008
- 转到“开始”>>“管理工具”>>“服务器管理器”。
- 在左侧窗格中,单击 Features.Under“功能摘要”部分,单击“添加功能”。
- 在 Select 功能页面上,select 桌面体验复选框。
- 查看需要安装的必需功能,然后单击“添加必需功能”,单击“下一步”。
- 在“确认安装”Selections 页面,确保桌面体验功能已安装,单击“安装”。
- 在安装结果页面,您将被要求重新启动服务器以完成安装过程。
- 只需单击“关闭”,然后单击“是”重新启动服务器。
- 服务器重新启动后登录服务器,服务器将完成剩余的安装步骤。
对于 Windows 服务器 2012
- 转到“开始”>>“管理工具”>>“服务器管理器”。
- 在服务器管理器中,单击功能。
- 在“服务器管理器”详细信息窗格中的“功能摘要”下,单击“添加功能”。
- 这将启动添加功能向导。
- 现在,在功能列表中,select 桌面体验,然后单击安装。
希望这个解决方案能帮到你:)
如果我在本地 IIS 上调试或 运行 我的 ASP.NET 应用程序工作正常。但是,如果我将它发布到 IIS 上,EmguCV 似乎会丢失它需要的 dll。我的 VS 项目的 bin 文件夹和 IIS 上的 bin 文件夹是相同的。
出现以下异常:
'Emgu.CV.CvInvoke' 的类型初始值设定项引发异常。
StackTrace:在 Emgu.CV.CvInvoke.cvCreateImageHeader(大小,IPL_DEPTH 深度,Int32 通道)在 Emgu.CV.Image2.AllocateData(Int32 rows, Int32 cols, Int32 numberOfChannels) at Emgu.CV.Image
2.set_Bitmap(位图值)在 CustomerserviceWizard.ImageHelper.DecodeUrl(LuminanceSource源、位图位图、List`1 方法)在:第 213 行
感谢任何帮助。
我曾经遇到过类似的问题,也许这对您的情况有帮助:请检查您的 IIS 应用程序池设置并确保在 "Advanced Settings".
下启用 32 位应用程序好吧,经过大量的研究和白发,我终于说服了我的老板只使用台式电脑来使用 EmguCV 处理图像。 异常的(非常明显的)原因是服务器中缺少 nVidia Cuda GPU。
当我尝试在 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 服务器启用 UI 桌面体验 解决了这个问题(在我的例子中 - Windows Server 2012 R2) 因为 Microsoft 从未默认在 Windows 服务器上启用该功能。
解决方案
对于 Windows 服务器 2008
- 转到“开始”>>“管理工具”>>“服务器管理器”。
- 在左侧窗格中,单击 Features.Under“功能摘要”部分,单击“添加功能”。
- 在 Select 功能页面上,select 桌面体验复选框。
- 查看需要安装的必需功能,然后单击“添加必需功能”,单击“下一步”。
- 在“确认安装”Selections 页面,确保桌面体验功能已安装,单击“安装”。
- 在安装结果页面,您将被要求重新启动服务器以完成安装过程。
- 只需单击“关闭”,然后单击“是”重新启动服务器。
- 服务器重新启动后登录服务器,服务器将完成剩余的安装步骤。
对于 Windows 服务器 2012
- 转到“开始”>>“管理工具”>>“服务器管理器”。
- 在服务器管理器中,单击功能。
- 在“服务器管理器”详细信息窗格中的“功能摘要”下,单击“添加功能”。
- 这将启动添加功能向导。
- 现在,在功能列表中,select 桌面体验,然后单击安装。
希望这个解决方案能帮到你:)