2012-03-30 45 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

相關問題