2

我試圖調試一個Web服務時遇到問題。 Web服務存在問題,但似乎無法處理它,因爲當我在Visual Studio Debugger中運行同一個項目時,它找不到任何相關的註冊表項。他們只是空了。當我嘗試列出HKLM \ Software中的所有可用密鑰時,該列表與我在RegEdit中可以看到的完全不同。似乎Visual Studio正在遭受某種註冊表虛擬化,即從IIS運行的相同代碼不受此限制。在Server 2008上禁用Visual Studio 2008的註冊表虛擬化

我以管理員身份運行Visual Studio(並在管理角色中運行它),而且這個問題似乎只出現了 - 昨天相同的代碼工作正常,這使得它更容易混淆。

有沒有一種方法可以使Visual Studio的調試器/ ASP.Net開發服務器以與進程正在運行的相同方式運行?如果沒有,是否有一種簡單的方法來識別我的Web服務將運行的進程,以便我可以附加到該方法並從中進行調試?

編輯:由於所涉及的註冊表項與64位應用程序有關,因此該問題似乎與Wow6432Node子項無關。但是,如果它在Visual Studio調試器中運行,我甚至無法從代碼中看到Wow6432Node鍵的存在。

+0

評論這個線程:http://stackoverflow.com/questions/1889941/64-bits-stuff-for-c-development – 2010-08-24 15:48:50

+0

感謝漢斯,我已覆蓋相關這是討論的一部分基礎,但需要提及我爲了澄清問題。 – glenatron 2010-08-24 16:00:32

+0

您是否像我在我的回答中描述的那樣嘗試使用64位遠程調試器?總的來說,你在Visual Studio中看到的所有東西都來自遠程調試器。所以你應該看到完整的註冊表鍵值。請確保您編譯的ASP.NET代碼不是用於「所有CPU」,而是用於「X64」。 – Oleg 2010-08-27 23:38:52

回答

0

只有一個未經測試的想法。有Visual Studio 2008 Service Pack 1遠程調試器,它可以是downloaded三個版本:x86,x64和IA64。 (相同的文件可能在您電腦上的%ProgramFiles%\Microsoft Visual Studio 9.0\Common7\IDE\Remote Debugger)。大概如果你將使用64位版本的遠程調試器,那麼你的問題將得到解決?

此鏈接"How to: Set Up Remote Debugging"可能也很有趣。

1

它涉及到註冊表虛擬化,請看這裏: http://msdn.microsoft.com/en-us/library/aa965884.aspx

這意味着每個用戶可以有不同的註冊表。如果你以服務用戶(asp.net)的身份運行,因爲你會得到'空'註冊表項 - 這是非常煩人的,因爲windows會在這個用戶的虛擬化副本HKML中查找而不是'全局'HKLM註冊表密鑰(你看到運行註冊表編輯器時)