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();
}
}
库和使用者必须相同。因此,请确定您正在调用的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/