ASP.Net MVC DllImport BadImageFormatException 32bit/64bit

大城市里の小女人 提交于 2020-01-03 00:54:11

问题


I have the below code which is throwing a BadImageFormatException. The DLL it's loading is 32bit. The web server is running Windows 64bit but the application pool is set to Enable 32 bit. Is there any way I can get this to work?

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();
    }
}

回答1:


Both the library and the consumer have to be the same. So determine what your lib you are calling is and ensure you are compiling for that type. Now - IIS itself (at least v 6) can only run one mode OR the other for everything so it either needs to be set for 64 or 32 bit across the board . See this http://support.microsoft.com/kb/894435

in conjunction with:

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



来源:https://stackoverflow.com/questions/6254824/asp-net-mvc-dllimport-badimageformatexception-32bit-64bit

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!