Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.Net MVC DllImport BadImageFormatException 32位/64位_C#_Asp.net Mvc_Asp.net Mvc 3_Iis 7 - Fatal编程技术网

C# ASP.Net MVC DllImport BadImageFormatException 32位/64位

C# ASP.Net MVC DllImport BadImageFormatException 32位/64位,c#,asp.net-mvc,asp.net-mvc-3,iis-7,C#,Asp.net Mvc,Asp.net Mvc 3,Iis 7,我有下面的代码,它抛出了一个BadImageFormatException。它加载的DLL是32位的。web服务器正在运行Windows 64位,但应用程序池设置为启用32位。有什么办法可以让它工作吗 public class HomeController : Controller { [DllImport("CDCrypt.dll")] [return: MarshalAs(UnmanagedType.LPStr)] public static extern Strin

我有下面的代码,它抛出了一个
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位。看到这个了吗

结合:


图书馆和消费者必须相同。因此,确定您要调用的lib是什么,并确保您是针对该类型编译的。现在-IIS本身(至少v6)只能运行一种模式或另一种模式,因此需要将其设置为64位或32位。看到这个了吗

结合:


您是将其编译为32位还是任何cpu?我已经尝试了这两种方法,但都无法加载作为CDCrypt.dll的dll?您必须将WP设置为使用与任何非托管DLL相同的“比特数”。如果您有多个,则它们必须全部匹配。您是将其编译为32位还是任何cpu?我已尝试了这两种方式,但都无法加载作为CDCrypt.dll的dll?您必须将WP设置为使用与任何非托管DLL相同的“比特数”。如果你有多个,它们必须都匹配。它使用的是iis 7,我试着用x86编译网站,但没有luckhmm。。iis 7那么我认为只需要工作进程是32位的-放入一些代码以确保您是32位的,作为双重检查-我在该链接中添加了代码,根据x86编译运行网页,它显示其32位,这表明一切正常,所以为什么异常显示输出。问题是我针对x64重新编译,现在得到一个YSOD,说它找不到主web应用程序dll,这表明它运行在32位,可能是安装了Windows 2008,可以复制问题,通过打开和关闭Enable32位模式可以看到它正在工作。我只是不知道如何解决这个问题。它使用iis 7,我试着根据x86编译该站点,但没有luckhmm。。iis 7那么我认为只需要工作进程是32位的-放入一些代码以确保您是32位的,作为双重检查-我在该链接中添加了代码,根据x86编译运行网页,它显示其32位,这表明一切正常,所以为什么异常显示输出。问题是我针对x64重新编译,现在得到一个YSOD,说它找不到主web应用程序dll,这表明它运行在32位,可能是安装了Windows 2008,可以复制问题,通过打开和关闭Enable32位模式可以看到它正在工作。我只是不知道如何解决这个问题