【发布时间】:2012-03-31 02:23:11
【问题描述】:
我在这里遇到了一个难题。
我的开发盒是 64 位的,Windows 7。 我所有的项目都编译为“任何 CPU”。 该项目正在引用 64 位版本的 3rd 方软件
当我运行不使用任何网络引用的单元测试时,它可以正常工作。我可以说它作为 64 位进程运行。我可以调用我的命令,它们运行良好。
但是,每当我运行一个调用我自己 PC 的 Web 服务调用的测试时,该代码就会返回告诉我它以 32 位/x86 运行。 Web 服务与单元测试完全相同,但它测试 Web 服务/SOAP 代理(实际上它调用相同的代码,除了通过 Web 服务)。
我一直在努力解决这个问题。我检查了所有第 3 方 dll,并确保它们编译为 32/64 位,并通过快速单元测试进行验证。我不确定为什么通过 IIS 的任何东西都将其变为 32 位。
似乎任何通过 IIS 的东西都将代码运行为 32 位而不是 64 位。
有什么想法吗?
【问题讨论】:
-
我不确定我是否完全理解了这个问题。您是说当您与本地 IIS 上托管的 Web 服务通信时,您的进程以 32 位运行?或者您是说 IIS 中托管的服务告诉您它们正在运行并且是 32 位的?
-
@mockobject - 是的。如果我调用 Web 服务,我的代码以 32 位运行。如果我直接调用它(相同的服务起点或任何地方),它会以 64 位运行。
-
您不应该在单元测试中调用 Web 服务。模拟 Web 服务调用。
-
我们的黑盒/系统测试将验证从头到尾的路径,其中包括多个服务调用。但是,白盒/单元测试(对我们来说包括集成测试)只执行其中一个调用,需要一个简单的 Web 服务测试来测试白盒代码。
标签: c# iis visual-studio-2005 x86 64-bit