2015-06-06 30 views
0

我需要確保我的ASP.NET MVC應用程序:如何告訴我的ASP.NET應用程序是否是一個32位的32位IIS工作進程

  • 建在32位模式
  • 運行在32位模式下的IIS工作進程中(即它在32位機器上,或者它在64位機器上的WOW64中運行)

我需要以編程方式檢查,因爲我是共享主機(我不能擺弄IIS)。

我可以檢查Environment.Is64BitProcess(或同等IntPtr.Size == 4),但我不確定這是否適用於我的應用程序或工作進程。我需要了解兩者的差距。

+0

應該沒有什麼區別。 64位IIS無法加載32位應用程序,反之亦然。如果您的應用程序以x86模式構建並運行,那麼應該已經告訴您IIS進程是32位的。你可以在你的本地機器上檢查它。至於檢查你的應用程序是以32位模式構建的,這是你所做的,而不是你的主機。你真的需要在運行時檢查嗎?在上傳之前,您不能簡單地在本地驗證它是否構建爲x86? – hvd

+0

@ hvd實際上,64位IIS有一個選項可以在Wow32模式下運行32位應用程序。至於我的DLL,是的,我需要在運行時檢查,因此我的問題。 –

+1

對不起,我應該更具體。 64位IIS可以使用32位工作進程來運行32位應用程序。 64位IIS工作進程無法運行32位應用程序。 – hvd

回答

2

你已經回答了你自己的問題,看着:

Environment.Is64BitProcess

是不夠好。

IIS上的應用程序託管在工作進程中,每個工作進程可以是32位或64位。這是與進程對應的應用程序池上的一個設置。所以這個過程中的所有應用程序都有相同的位數。您的應用程序始終使用與應用程序池工作進程相同的位數。

+0

您的意思是我可以確定工作進程的位數,從而推斷出我的程序集的位數?所以,1)如果應用程序正在運行,2)如果我可以查詢'Environment.Is64BitProcess',以及3)如果它是'false',那麼我可以假定工作進程是32位的(因此我的應用程序正在運行在32位模式下)。由於32位工作進程無法運行64位應用程序,因此我可以推斷*我的程序集實際上是在32位模式下編譯的? –

+0

@hbob - 是的,這就是我想說的。您可以通過檢查「Is64BitProcess」,然後更改IIS AppPool上的設置並再次檢查,在本地工作站上對其進行測試。 –

相關問題