Nic*_*ver 16 asp.net oracle 64-bit webdev.webserver
Visual Studio是x86直到2010年版本至少 更新:这仍然是VS2010中的一个问题,没有原生的64位Cassini支持.我的问题是,任何人都可以想到一种方式或知道一个独立的ASP.NET调试服务器,它是2008年或2010年的x64吗?
背景:我们的ASP.NET应用程序作为数据库运行Oracle.由于我们以后会在64位服务器上出现内存问题,因此我们需要使用Oracle的64位驱动程序(Instant Client).
建立:
在IIS中,应用程序池以64位运行,按预期使用Oracle驱动程序,但是由于WebDev.WebServer.exe是32位,因此您将获得BadImageFormatException,因为它试图以32位加载64位驱动程序DLL环境.我们所有的开发人员都希望能够通过Visual Studio 2008使用快速调试服务器,但由于它以32位运行,我们无法做到.我们遇到的一些问题是在应用程序启动期间,因此虽然我们附加到IIS进程有时不足以跟踪问题.
有没有替代方案或解决方法?我们希望尽可能地匹配我们的Dev/Val/Prod层,因此在x64中运行的所有内容都是理想的.
自这个问题首次发布以来,这个问题发生了很多变化,首先VS2010现在已经出现了,它仍然存在相同的问题,但是我所参与的项目没有.我们经历了2次更改来解决这个问题,所以我会发布这些内容,希望它可以拯救别人的悲痛:
第一个解决方案是以32位加载Oracle x86,在64位模式下加载x64,我们通过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>
Run Code Online (Sandbox Code Playgroud)
这里的关键是processorArchitecture="amd64",这意味着只有在64位下运行时才会发生替换.
请注意,这些版本现在可能已经过时了(如果你正在阅读这篇关于Oracle的内容),这还有一段时间了.除了配置,我们还将32位和64位版本加载Oracle.DataAccess 到GAC中.32位版本适用10.xxx于Oracle 10g,64位版本2.1xxx,因此只需使用<assemblyBinding>作品交换绑定.
第二个更长期的解决方案是完全离开Oracle客户端,我们现在使用dotConnect for Oracle作为我们的Linq-to-SQL提供程序,并且因为它是使用直接TCP连接的完全托管代码,所以我们没有更多/ 64位特定代码在应用程序中,更容易维护.
我希望无论谁发现这一点,也会发现后续行动也很有用.如果您对我最终使用的任何一种解决方案有疑问,请发表评论,我会尝试更详细地解释.
| 归档时间: |
|
| 查看次数: |
10413 次 |
| 最近记录: |