【发布时间】:2011-09-09 10:26:50
【问题描述】:
我有下面的代码抛出一个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();
}
}
【问题讨论】:
-
你是编译成 32-bit 还是 any-cpu?
-
我都试过了,都不能加载dll
-
什么是 CDCrypt.dll?您必须将 WP 设置为使用与任何非托管 dll 相同的“位数”。如果您有多个,它们必须全部匹配。
标签: c# asp.net-mvc asp.net-mvc-3 iis-7