2012-03-30 46 views
2

我在这里有一个难题。.NET 2005 - 通过IIS进行测试以x86身份运行。单元测试运行x64

我的开发箱是64位,Windows 7。 我所有的项目都编译为“任何CPU”。 该项目引用64位版本的第三方软件

当我通过我的单元测试,没有使用任何网站引用它运作,因为它应该。我可以说它是作为一个64位进程运行的。我可以打电话给我的命令,他们工作得很好。

但是,每当我运行一个调用Web服务调用到我自己的PC的测试时,该代码就会告诉我它正在以32位/ x86的方式运行。 Web服务与单元测试完全相同,但它测试Web服务/ SOAP代理(实际上它调用相同的代码,除了通过Web服务)。

我一直在打我的头,试图弄清楚这一点。我检查过所有第三方DLL,并确保它们被编译为32/64位,并通过快速单元测试进行验证。我不确定为什么通过IIS将它变成32位。

似乎任何通过IIS运行代码为32位与64位。

有什么想法?

+0

我不确定我完全理解了这个问题。你是说当你与本地IIS托管的Web服务通信时,你的进程运行在32位?或者你是否说IIS中托管的服务正在告诉你他们正在运行并且32位? – mockobject 2012-03-30 18:17:16

+0

@mockobject -yes。如果我调用Web服务,我的代码运行为32位。如果我直接调用它(相同的服务起点或任何地方),它将以64位运行。 – 2012-03-30 18:23:59

+0

作为单元测试的一部分,您不应该调用Web服务。嘲笑Web服务调用。 – 2012-03-30 18:29:05

回答

3

我遇到了Windows 7 64位的AnyCPU编译引用的32位DLL问题,导致我的应用程序出错。我发现我需要执行以下操作:

打开IIS>钻入应用程序池> {您的应用程序池}>高级设置,然后将“启用32位应用程序”属性设置为True。

不确定这是否与您的问题有关或不具体,但可能需要检查吗?

+0

发现它 - 它已被设置为true。去看看它是如何工作的,如果它是假的。 = D – 2012-03-30 18:16:00

+0

看来,将其改为虚假作品 - 将确保它完全正常工作。 – 2012-03-30 18:27:52

+0

好,看起来好像是另一种方式'轮你= D – 2012-03-30 18:29:23

相关问题