我有下面的代码扔了BadImageFormatException
。它加载的DLL是32位。 Web服务器运行Windows 64位,但应用程序池设置为启用32位。有什么办法可以让这个工作?ASP.Net MVC DllImport BadImageFormatException 32bit/64bit
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位或任何CPU的? – 2011-06-06 16:11:20
我已经试过并且都不能加载dll – Jon 2011-06-06 16:13:44
什么是CDCrypt.dll?您必须将您的WP设置为使用与任何非托管dll相同的“bitness”。如果你有不止一个,他们必须全部匹配。 – Andy 2011-06-06 16:37:34