ASP.Net MVC DllImport BadImageFormatException 32bit/64bit

本文关键字:32bit 64bit BadImageFormatException DllImport Net MVC ASP | 更新日期: 2023-09-27 17:58:26

我有下面的代码,它正在抛出一个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();
    }
}

ASP.Net MVC DllImport BadImageFormatException 32bit/64bit

库和使用者必须相同。因此,请确定您正在调用的lib是什么,并确保您正在为该类型进行编译。现在,IIS本身(至少是v6)只能为所有运行一种模式或另一种模式,因此需要将其设置为64位或32位。看看这个http://support.microsoft.com/kb/894435

与结合使用

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