【问题标题】:ASP.Net MVC DllImport BadImageFormatException 32bit/64bitASP.Net MVC DllImport BadImageFormatException 32bit/64bit
【发布时间】:2011-09-09 10:26:50
【问题描述】:

我有下面的代码抛出一个BadImageFormatException。它加载的 DLL 是 32 位的。 Web 服务器运行 Windows 64 位,但应用程序池设置为启用 32 位。有什么办法可以让它工作吗?

public class HomeController : Controller
{
    [DllImport("CDCrypt.dll")]
    [return: MarshalAs(UnmanagedType.LPStr)]
    public static extern String Encrypt 
        ([MarshalAs(UnmanagedType.LPStr)] String aName);

    [DllImport("CDCrypt.dll")]
    [return: MarshalAs(UnmanagedType.LPStr)]
    public static extern String Decrypt
        ([MarshalAs(UnmanagedType.LPStr)] String aName);

    public ActionResult Index()
    {
        try
        {
            ViewBag.EncryptString = Encrypt("test");
        }
        catch (Exception e)
        {
            ViewBag.EncryptString =
                "Stack Trace\r\n:" + "\r\nException: " + e.Message;
            return new HttpStatusCodeResult(500);
        }
        return View();
    }

    public ActionResult Up()
    {
        ViewBag.Up = "You can see me";
        return View();
    }
}

【问题讨论】:

  • 你是编译成 32-bit 还是 any-cpu?
  • 我都试过了,都不能加载dll
  • 什么是 CDCrypt.dll?您必须将 WP 设置为使用与任何非托管 dll 相同的“位数”。如果您有多个,它们必须全部匹配。

标签: c# asp.net-mvc asp.net-mvc-3 iis-7


【解决方案1】:

图书馆和消费者都必须是相同的。因此,请确定您调用的库是什么,并确保您正在为该类型进行编译。现在 - IIS 本身(至少 v 6)只能为 everything 运行一种模式或另一种模式,因此需要全面设置为 64 位或 32 位。看到这个 http://support.microsoft.com/kb/894435

结合:

http://social.msdn.microsoft.com/Forums/en-US/netfx64bit/thread/35b09f74-1d8e-4676-90e3-c73a439bf632/

【讨论】:

  • 它使用 iis 7,我尝试针对 x86 编译站点,但没有成功
  • hmm.. iis 7 那么我认为只需要工作进程为 32 位 - 放入一些代码以确保您是 32 位作为双重检查 - stackoverflow.com/questions/1953377/…
  • 我在该链接中添加了代码,针对 x86 编译运行网页,它说它的 32 位表示一切正常,所以为什么异常 encrypt.tbmaster.co.uk/home/up 显示输出。 encrypt.tbmaster.co.uk/home/index 是问题
  • 我针对 x64 重新编译,现在得到一个 YSOD 说它找不到主 Web 应用程序 dll,这表明它可能在 32 位运行
  • 我已经安装了 Windows 2008 并且可以复制问题并且可以通过打开和关闭 Enable32bit 模式来查看它的工作。我只是不知道如何解决这个问题
猜你喜欢
  • 2010-11-12
  • 1970-01-01
  • 2012-01-16
  • 2011-06-06
  • 1970-01-01
  • 2015-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多