23

我上的Application_Start()第一行一個破發點,但Visual Studio中它不會打破。不能在Global.asax中/打破的Application_Start

的Visual Studio本身已經連接到IIS工作過程:

自動附加到進程機器 'SRD00510' '[2092] w3wp.exe的' 成功。

我在家裏控制器斷點做的工作。

更新

我已經試過:

  • iisreset
  • 重新啓動Visual Studio的
  • 重新啓動。
  • 試圖重新安裝ASPNET(aspnet_regiis -i
+0

什麼IIS版本? – jrummell

+0

IIS 7。5在WinSvr 2008 R2 – jgauffin

+0

嘗試右鍵點擊proj。調試>步入新實例。這樣你就可以看到從一開始發生了什麼.. – jrb

回答

47

讀你的問題,我假設你使用IIS進行調試,而不是Visual Studio Development Server。

在這種情況下,調試應用程序的啓動是非常棘手的,因爲只有在啓動或回收應用程序池時才調用它。當Visual Studio附加到進程時,Application_Start已經運行。

訣竅是讓應用程序池回收而不會終止您附加的進程。

執行以下操作:

  1. 在Visual Studio(必須以管理員身份運行)在 的global.asax.cs設置斷點和啓動調試如常​​(F5)。該頁面在您的網頁瀏覽器中打開,網址爲 ,但斷點未命中。
  2. 現在的技巧:使用文本編輯器,從IIS提供的服務器打開web.config ,對其進行更改(例如在某處輸入空行)並保存該文件。與在IIS中回收應用程序池相反,此 允許應用程序池回收(並因此在下次調用該網站時在global.asax.cs中運行 Application_Start),而不會中止您附加的進程。
  3. 在您的網絡瀏覽器中,重新加載頁面。現在應該打破斷點!

這適用於我(IIS 7.5,VS2015)。

+1

這仍然適用於第2步和第3步之間的輕微修改。更改web.config會強制您停止調試,但是您可以重新附加到該過程並按照說明繼續操作。 – Danation

+0

你從哪裏學到這些東西? –

+0

@Danation:你說得對。你不應該使用你當前正在調試的Visual Studio實例。主要的一點是,您可以在IIS上爲其提供服務的位置上的磁盤上編輯web.config。這可能與您的Visual Studio項目所在的位置不同。查看IIS站點根目錄在磁盤上的位置。相應地更改了我的答案。 – Jochen

6

Application_Start()只運行一次,應用程序啓動時。即重新啓動應用程序有幾件事情是:

  • 的web.config變化
  • 回收工作進程 - 您可以在IIS管理器或通過在命令行中運行iisreset做到這一點。
+0

我已經用任務管理器殺死了w3wp並試圖更改web.config。 – jgauffin

+0

這很奇怪......如果你已經連接了,改變web.config應該這樣做。你確定在中斷點的代碼正在執行嗎?你可以將它移動到Application_Start()的開頭嗎? – jrummell

+0

是的,我確定。 – jgauffin

14

廣場這條線在你的Application_Start()。

Debugger.Break(); 

這會顯示一個對話框,讓您選擇一個調試器。您可能需要重新啓動應用程序池。

+1

這給了我一個視覺工作室的新實例。 – jgauffin

+0

通常,你會得到一個「選擇器」的形式來選擇一個新的VS或當前正在運行的VS.你沒有看到? – spender

+0

是的,但我只能選擇一個新的Visual Studio實例。 – jgauffin

0

我假設你通過點擊Visual Studio中的「調試」按鈕來加載應用程序?這就是我正在做的事情(在VS 2012中)並且看到類似的問題。第一次按該按鈕將啓動應用程序,並正確地點擊斷點。但似乎在我停止調試應用程序本身後繼續前進。所以,未來的調試嘗試只是附加到現有的過程。
「停止調試」按鈕旁邊有一個「重新啓動」按鈕,所以我會假設點擊它至少會改變事情。 調試應用程序不會顯示在IIS管理器中,所以我無法在那裏停止它。同樣,iisreset也沒有抓住它。

只有到目前爲止,我已經想通了的事情是改變一行代碼,從而迫使Visual Studio來觸發一個構建,然後將其殺死現有proc和重新開始。有點煩人,如果我只想經過那裏多次。

我不認爲這是一個合適的「答案」,但直到有人真的與一個真正的答案可能是一個有益的解決辦法給你。

1

我的解決辦法是切換到使用「的Visual Studio開發服務器」來處理應用程序類(Global.asax中)的問題。完成後,我切換回IIS。

0

我已經這樣做解決此問題得到了前:

  1. 運行全新的我的解決方案(右鍵單擊解決方案節點,然後單擊清潔)
  2. 關閉解決方案
  3. 文件 - >退出在視覺工作室
  4. 如果您有多個運行visual studio的實例,請退出所有實例。確保在任務管理器中的進程中沒有列出「devenv.exe」
  5. 刪除用戶選項文件(.suo),通常位於與解決方案(.sln)文件相同的目錄中
  6. 回收IIS工作進程或if使用開發服務器,殺死該進程

現在打開您的解決方案,並給它一個鏡頭。 (保持你的手指交叉:))

0

當您運行的應用程序第一次,或者說啓動一個應用程序,有一個ASP.Net開發服務器 - 端口[端口號]啓動,

Application_Start()在應用程序過程中運行一次。

如果您想要達到中斷點,您必須停止ASP.Net Development Server端口並再次運行您的應用程序。

0

如果[2092] w3wp.exe的是,你犯了一個服務,試試這個: 一站式服務 - >重建服務項目 - >啓動重建服務 - >嘗試調試

相關問題