问题描述
我在VS2012编写了一个网站,c#语言开发的,其中调用了C++编译的一个dll文件,已经调试通过了,然后通过vs2012发布这个网站,选择的“文件系统发布方式:”然后在IIS新建网站,然后也发布成功了,然后在使用网站上的计算功能时,就出错误了,“/”应用程序中的服务器错误。试图加载格式不正确的程序。(异常来自HRESULT:0x8007000B)说明:执行当前Web请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。异常详细信息:System.BadImageFormatException:试图加载格式不正确的程序。(异常来自HRESULT:0x8007000B)源错误:执行当前Web请求期间生成了未经处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。堆栈跟踪:[BadImageFormatException:试图加载格式不正确的程序。(异常来自HRESULT:0x8007000B)]WebApplication2.demo.test(IntPtrpin,IntPtrpout)+0这句是我调用dll的接口函数、WebApplication2.demo.Button1_Click(Objectsender,EventArgse)+2839System.Web.UI.WebControls.Button.RaisePostBackEvent(StringeventArgument)+155System.Web.UI.Page.ProcessRequestMain(BooleanincludeStagesBeforeAsyncPoint,BooleanincludeStagesAfterAsyncPoint)+3804请问大神们应该怎么办??
解决方案
解决方案二:
打开IIS,找到网站的应用程序池,点击“高级设置”菜单,将“启用32位应用程序”项设置为true试试看
解决方案三:
理论上,c++写的一个dll,在C#或asp中,添加引用并使用DLLImport扩展接口函数后,即可正常使用。试图加载格式不正确的程序说明并没有成功加载这个dll,除了版本不对之外,很有可能就是dll数字签名/注册没有通过。在VS中调试和在IIS中运行是有区别的:IIS的账户权限远远小于VS(管理员权限)的权限。可以试试1楼的办法,这个设置也是一个很坑爹的地方~
解决方案四:
试了一楼的方法还是不行,请问大神们还有其他方法嘛