gpt4 book ai didi

asp.net - 如何在 x64 中使用 WebDev.WebServer.exe (VS Web Server)?

转载 作者:行者123 更新时间:2023-12-03 15:02:22 25 4
gpt4 key购买 nike

Visual Studio 是 x86,直到至少 2010 版本出现 更新:这在 VS2010 中仍然是一个问题,没有原生的 64 位 Cassini 支持。我的问题是有人能想出办法或知道 2008 年或 2010 年的 x64 独立 ASP.NET 调试服务器吗?

背景:我们的 ASP.NET 应用程序针对作为数据库的 Oracle 运行。由于我们稍后在 64 位服务器上处理内存问题,因此我们需要使用 Oracle 的 64 位驱动程序(即时客户端)。

设置:

  • x64 操作系统(XP 或 Windows 7)
  • IIS(6 或 7,都是 x64 应用程序池)
  • Oracle 64-bit Instant Client (单独的目录,在 PATH 中)
  • Visual Studio 2008 SP1 Visual Studio 2010

  • 在 IIS 中,应用程序池作为 64 位运行,按预期使用 Oracle 驱动程序,但是因为 WebDev.WebServer.exe 是 32 位的,你会得到一个 BadImageFormatException 因为它试图在 32 位环境中加载 64 位驱动程序 DLL。我们所有的开发人员都希望能够通过 Visual Studio 2008 使用快速调试服务器,但由于它以 32 位运行,我们无法做到。我们遇到的一些问题是在应用程序启动期间,所以虽然我们有时会附加到 IIS 进程,但这还不足以追踪问题。

    是否有任何替代方案或解决方法?我们希望尽可能匹配我们的 Dev/Val/Prod 层,因此在 x64 中运行的所有内容都是理想的。

    VS 2010 更新

    这个问题自首次发布以来发生了很多变化,第一个 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>

    这里的关键是 processorArchitecture="amd64" ,这意味着替换仅在 64 位下运行时发生。

    请注意,这些版本现在可能已经过时了(如果您正在阅读这篇特别关注 Oracle 的内容),那是很久以前的事了。除了配置之外,我们还加载了 Oracle.DataAccess 的 32 位和 64 位版本。 into the GAC . 32 位版本是 10.xxx对于 Oracle 10g,64 位版本为 2.1xxx ,所以只是 swapping the binding using <assemblyBinding> works .

    第二个更长期的解决方案是完全脱离 Oracle 客户端,我们现在使用 dotConnect for Oracle对于我们的 Linq-to-SQL 提供程序,由于它是使用直接 TCP 连接的完全托管代码,我们在应用程序中没有更多的 32/64 位特定代码,即 更容易维护。

    我希望发现这一点的人也会发现后续行动也很有用。如果您对我最终使用的任一解决方案有疑问,请发表评论,我会尝试更详细地解释。

    最佳答案

    两个想法:

  • 用来自 Mono 的 XSP 拼凑一些东西项目。
  • 在全32位环境下测试,部署到64位环境。
  • 关于asp.net - 如何在 x64 中使用 WebDev.WebServer.exe (VS Web Server)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/837285/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com