Visual Studio是86
这仍然是在VS2010的问题,没有提供原生64位卡西尼支持。我的问题是任何人都可以想出一种方式,或知道一个独立的ASP.NET调试服务器,这是2008年或2010年的x64?
背景:我们的ASP.NET应用程序针对Oracle作为数据库运行。由于我们之后在64位服务器上出于内存方面的考虑,我们需要使用Oracle的64位驱动程序(即时客户端)。
建立:
在IIS中,应用程序池以64位运行,按预期使用Oracle驱动程序,但由于WebDev.WebServer.exe是32位,因此您将获得BadImageFormatException,因为它试图在64位驱动程序DLL中加载32位环境。我们所有的开发人员都希望能够通过Visual Studio 2008使用快速调试服务器,但由于它运行的是32位,所以我们无法做到这一点。我们遇到的一些问题是在应用程序启动过程中,所以尽管我们有时会附加到IIS进程,但这还不足以跟踪问题。
有没有其他方法或解决方法?我们希望尽可能匹配我们的Dev / Val / Prod层,所以在x64上运行的所有东西都是理想的。
自从第一次发布以来,这个问题发生了很多变化,首先VS2010已经出来了,但它仍然存在相同的问题,但是我所做的项目并没有。我们经历了2次修改来解决这个问题,所以我会发布这些信息,希望能够拯救别人的悲伤:
第一种解决方案是在64位模式下加载32位以上的Oracle x86,在64位模式下加载64位,我们通过在通过web.config在64位下运行时替换程序集引用来完成此操作,如下所示:
<configuration>
<runtime>
<assemblyBinding>
<dependentAssembly>
<assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89b483f429c47342" processorArchitecture="amd64" />
<bindingRedirect oldVersion="2.0.0.0-10.9.9.9" newVersion="2.102.3.2" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
这里的关键是processorArchitecture="amd64"
,这意味着更换只发生在64位下运行。
请注意,这些版本现在可能已过时(如果您正在阅读关于Oracle的这种关注),那是一段时间了。除了配置之外,我们还将32位和64位版本加载Oracle.DataAccess
到GAC中。32位版本适用10.xxx
于Oracle 10g,64位版本2.1xxx
,因此只需使用<assemblyBinding>
作品交换绑定即可。
第二个更长期的解决方案是完全脱离Oracle客户端,现在我们为我们的Linq-to-SQL提供程序使用dotConnect for Oracle,并且由于它完全是使用直接TCP连接的托管代码,所以我们不再有32个/ 64位应用程序中的特定代码,这更容易维护。
我希望无论谁发现这一点也会发现后续有用。如果您对我最终使用的解决方案有任何疑问,请发表评论,我会尝试更详细地解释。
发布于 2018-04-13 14:44:40
你可以尝试从源代码编译一个64位的Cassini 。
https://stackoverflow.com/questions/-100008098
复制相似问题