WIN7 64位操作系统,Oracle.DataAccess在VS2010中正常,到了IIS就不正常了

时间:2022-09-29 14:00:59
如题,IIS中没有启用32位程序,因为一启动,页面运行就导致应用程序池停止
oracle.dataaccess版本为2.112.3.0
数据库用的oracle11

11 个解决方案

#1


列出异常信息,否则就靠报错来猜测啊? WIN7 64位操作系统,Oracle.DataAccess在VS2010中正常,到了IIS就不正常了

#2


oracle11 的ODP.NET版本为4.112.3.0吧?

#3




引用 1 楼 starfd 的回复:
列出异常信息,否则就靠报错来猜测啊? WIN7 64位操作系统,Oracle.DataAccess在VS2010中正常,到了IIS就不正常了

能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项。试图加载格式不正确的程序。

说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.BadImageFormatException: 未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项。试图加载格式不正确的程序。

源错误: 

执行当前 Web 请求期间生成了未经处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。

程序集加载跟踪: 下列信息有助于确定程序集“Oracle.DataAccess”未能加载的原因。

#4


先确认你的dll在你发布的bin目录下有没有

#5


引用 4 楼 starfd 的回复:
先确认你的dll在你发布的bin目录下有没有

动态库是有的

#6


我的oracle客户端是使用的32位的,会不会与这个有关系

#7


看图吧
WIN7 64位操作系统,Oracle.DataAccess在VS2010中正常,到了IIS就不正常了

#8


这个在网上看了很多,这么设置会导致:页面运行就导致应用程序池停止

#9


遇到过类似的问题,记不太清楚怎么解决的了,你先试试7楼的方法
不行的话可能就是版本的问题了。

#10


引用 8 楼 zhouwu0716 的回复:
这个在网上看了很多,这么设置会导致:页面运行就导致应用程序池停止
+1

#11


引用 8 楼 zhouwu0716的回复:
这个在网上看了很多,这么设置会导致:页面运行就导致应用程序池停止

你是在该网站自己的程序池设置的吗?你不会没新建程序池吧?要在新建的应用程序池中设置启用32位应用程序。
你说在VS2010中正常,2010版默认使用的iis express就是32位版本程序,所以你是在32位环境中调试成功的,你跑到64位下运行32位程序有点异常不奇怪。
所以你还是需要将IIS的环境配置成32位,如果你服务器因安装域控的缘故,无法在32、64之间调和,可以在C:\Windows\System32\inetsrv\config\applicationHost.config中对单独的dll设置加载模式。

#1


列出异常信息,否则就靠报错来猜测啊? WIN7 64位操作系统,Oracle.DataAccess在VS2010中正常,到了IIS就不正常了

#2


oracle11 的ODP.NET版本为4.112.3.0吧?

#3




引用 1 楼 starfd 的回复:
列出异常信息,否则就靠报错来猜测啊? WIN7 64位操作系统,Oracle.DataAccess在VS2010中正常,到了IIS就不正常了

能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项。试图加载格式不正确的程序。

说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.BadImageFormatException: 未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项。试图加载格式不正确的程序。

源错误: 

执行当前 Web 请求期间生成了未经处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。

程序集加载跟踪: 下列信息有助于确定程序集“Oracle.DataAccess”未能加载的原因。

#4


先确认你的dll在你发布的bin目录下有没有

#5


引用 4 楼 starfd 的回复:
先确认你的dll在你发布的bin目录下有没有

动态库是有的

#6


我的oracle客户端是使用的32位的,会不会与这个有关系

#7


看图吧
WIN7 64位操作系统,Oracle.DataAccess在VS2010中正常,到了IIS就不正常了

#8


这个在网上看了很多,这么设置会导致:页面运行就导致应用程序池停止

#9


遇到过类似的问题,记不太清楚怎么解决的了,你先试试7楼的方法
不行的话可能就是版本的问题了。

#10


引用 8 楼 zhouwu0716 的回复:
这个在网上看了很多,这么设置会导致:页面运行就导致应用程序池停止
+1

#11


引用 8 楼 zhouwu0716的回复:
这个在网上看了很多,这么设置会导致:页面运行就导致应用程序池停止

你是在该网站自己的程序池设置的吗?你不会没新建程序池吧?要在新建的应用程序池中设置启用32位应用程序。
你说在VS2010中正常,2010版默认使用的iis express就是32位版本程序,所以你是在32位环境中调试成功的,你跑到64位下运行32位程序有点异常不奇怪。
所以你还是需要将IIS的环境配置成32位,如果你服务器因安装域控的缘故,无法在32、64之间调和,可以在C:\Windows\System32\inetsrv\config\applicationHost.config中对单独的dll设置加载模式。