【问题标题】:System.BadImageFormatException [duplicate]System.BadImageFormatException [重复]
【发布时间】:2015-05-10 17:32:04
【问题描述】:

我有以下情况:

  • 我有一个在 Windows 8 64 位环境下运行的 .NET 框架 4.5 的 ASP.NET 应用程序
  • 我有一个需要使用的外部 DLL 库,它将我的系统连接到本地的另一个应用程序。

我尝试了以下方法:

  • 将我的应用程序向下移植到 .NET 3.5 和 4.0
  • 从 Singleton 类和静态类调用 DLL 库
  • 使用 x86 编译和调试我的应用程序
  • 测试从桌面、Web 服务或 WCF 应用程序调用 DLL

问题是,调用此 DLL 的唯一成功方法是从桌面、Web 服务或 WCF 应用程序调用它们。无论我尝试什么条件,我都无法从我的 ASP.NET 应用程序中调用此 DLL。

我总是遇到 System.BadImageFormatException,说“附加信息:尝试加载格式不正确的程序。(来自 HRESULT 的异常:0x8007000B)”

很遗憾,我无法提供有关此 DLL 的更多详细信息。并且让我的 ASP.NET 应用程序连接到 WCF 应用程序会遇到性能问题。

有什么想法吗?

P.S.:非常抱歉我的英语不好。任何帮助将不胜感激。

编辑:

我已经看到了已经给出的参考。虽然,奇怪的是,这个参考并没有为我的问题提供任何解决方案。

如前所述,我曾尝试使用 x86 和 x64 平台、.NET 框架 3.5、4.0 和 4.5 以及任何其他项目类型(桌面应用程序、WCF,ASP.NET 除外)开发各种测试应用程序执行 DLL 调用。

显然,在与 DLL 的作者讨论之后,我们得出结论,只有类桌面或类服务的应用程序才能调用这种类型的 DLL。我的理解是:“ASP.NET 应用程序在 HTTP 上下文中运行,它在用户请求资源时执行”(对于我的浅薄理解,我深表歉意,但如果我错了,请纠正我..)

还有一个问题:

从这种情况下生成 System.BadImageFormatException 的可能性很大吗?

【问题讨论】:

    标签: c# asp.net dll


    【解决方案1】:

    在 Visual Studio IDE 中将平台目标从“X86”更改为“Any CPU”。

    参考这里Troubleshooting BadImageFormatException

    【讨论】:

    • 您好,感谢您的回复。我已经将它设置回任何 CPU 但仍然没有机会..
    • @Galih Dono Prabowo:- 外部 DLL 支持 64 位环境?
    • 是的,我已经通过从 32 位和 64 位应用程序(桌面、Web 服务或 WCF 应用程序)调用它来测试它。但是使用 ASP.NET 就没有运气了。有没有办法在 ASP.NET 中创建一个类似于桌面应用程序类的类?比如一个窗口类?或者这是一种不好的做法?
    猜你喜欢
    • 2011-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    • 2017-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多