ASP.NET Web 应用程序:无法读取 DLL
我有一个 ASP.NET 应用程序,其中添加了两个引用:MapServer 和 GDAL。这两个 DLL 使用了一堆其他 DLL,它们都在我的应用程序 /bin
目录中。
当我在自己的 PC 上的 Visual Studio 2010 中运行该应用程序时,它运行良好。当我使用 IIS 将其上传到 Windows 2008 服务器时,它会抛出此异常:
Could not load file or assembly 'gdal_csharp' or one of its dependencies.
An attempt was made to load a program with an incorrect format.
当通过服务器上的 Visual Studio 运行应用程序时,它运行良好。
我什至尝试将 /bin
目录添加到 PATH 环境变量中,然后重新启动服务器。但运气不好。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我的猜测是,该 DLL 是一个仅 32 位的 DLL,您尝试在 x64 环境中运行它。您可以尝试将应用程序池设置为仅 32 位吗?
更新:这里有一个简单的说明:http://help.webcontrolcenter.com/KB/a1114/how-to-enable-a-32-bit-application-pool-in-iis7-dedicatedvps.aspx
My guess is that the DLL is a 32-bit only DLL that you are trying to run in a x64-environment. Can you try to set the app-pool to 32-bit only?
Update: a simple instruction is here: http://help.webcontrolcenter.com/KB/a1114/how-to-enable-a-32-bit-application-pool-in-iis7-dedicatedvps.aspx
您需要在 GAC 上注册 dll:http://en.wikipedia.org/wiki/Global_Assembly_Cache
You need to register the dll at GAC: http://en.wikipedia.org/wiki/Global_Assembly_Cache
正如已经提到的,您可能遗漏了 GAC 的一些内容。
要查看发生了什么,您可以尝试打开 Fusion Logging ,这将使您能够查看所有程序集加载失败。
回归基础:使用 Fusion 日志查看器调试模糊加载器错误
As already mentioned you may be missing something from the GAC.
To see whats happening you could try turning on Fusion Logging, this will enable you to view all of the assembly load failures.
Back to Basics: Using Fusion Log Viewer to Debug Obscure Loader Errors