ASP.Net MVC DllImport BadImageFormatException 32 бит / 64 бит - PullRequest
1 голос
/ 06 июня 2011

У меня есть код ниже, который выбрасывает BadImageFormatException. DLL, которую она загружает, является 32-битной. Веб-сервер работает под управлением Windows 64bit, но для пула приложений установлено значение Enable 32 bit. Можно ли как-нибудь заставить это работать?

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 Ответ

1 голос
/ 06 июня 2011

И библиотека, и потребитель должны быть одинаковыми.Так что определите, какова ваша библиотека, которую вы вызываете, и убедитесь, что вы компилируете для этого типа.Теперь - сам IIS (по крайней мере v 6) может запускать только один режим ИЛИ другой для все , поэтому его нужно либо установить на 64, либо на 32-разрядную версию.См. Это http://support.microsoft.com/kb/894435

в сочетании с:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...