﻿# 嘗試執行專案時發生錯誤: 無法在Web伺服器上啟動偵錯。

在 2011 年的今天，我們又再度接手了一個 ASP.NET 1.1 的網站維護，而在開發主機都正常運作了幾個月之後卻又再度遇到鬼打牆的問題，而且這個錯誤訊息真的會讓人丈二金剛摸不著頭緒【嘗試執行專案時發生錯誤: 無法在Web伺服器上啟動偵錯。無法啟動 ASP.NET 或 ATL Server 偵錯。 請確認該伺服器已正確安裝 ASP.NET 或 ATL Server。】，我跟他奮鬥了五個小時才弄清楚問題發生的主因。

先說明我的開發環境：

-   Windows Server 2003 SP2
-   Visual Studio .NET 2003
-   開發的網站安裝在 IIS 6 的預設站台下
-   該站台已經擴充了 FrontPage Server Extension
-   網站的 .NET 版本為 ASP.NET 1.1
-   請參考我先前的文章【[安裝 Visual Studio .NET 2003 開發主機筆記](/post/2008/11/28/Visual-Studio-NET-2003-Development-Machine-Install-and-Setup-Note.aspx)】

這次在 Visual Studio .NET 2003 裡直接按下 F5 進入偵錯模式，就會立即出現以下錯誤訊息：

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/aa4abe48e650517d7278-image_1043.png)

這個問題我找了許多國內外的論壇、部落格文章、MSDN 文章等，在本文最後的「相關連結」有許多解決問題的方法說明，大部分的情況應該都能解決，不過我比較倒楣一些些，這些參考資料與文章裡，沒有一篇能夠直接解決我的問題，所以才花了五個小時研究出來真正的問題所在，我想以後在遇到這狀況應該不太會卡關，因此我建議先看完我這篇文章所提及的觀念後再進一步追查問題，相信很快就能解決這個棘手的情況。

經我研究之後發現，大多這類問題都是卡在 IIS 身上，反而 Visual Studio .NET 2003 裡的專案設定並不會有太大的問題，如果說真是在 Visual Studio .NET 2003 裡出問題，比較有可能的狀況是在你網站專案的 Web.config 如果有異常的現象，那也有可能會出現類似的錯誤，不過你只要先確認透過瀏覽器可以正常瀏覽與執行該網站，那麼問題已經解決一大半，剩下的就是來處理 IIS 的問題即可。

本篇文章就是站在「你已確認透過瀏覽器可以正常瀏覽與執行該網站」的情況下，而又無法透過 Visual Studio .NET 2003 直接進入開始偵錯模式的問題進行處理，以下我整理出幾個與 IIS 設定有關的錯誤點，也許大家看到畫面就能立刻解決問題：

1\. 記得執行 **配置 Server Extension 2002**，已啟用 FrontPage Server Extensio 的畫面如下：

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/dd50e6f3ac94abd457ab-image_1044.png)

2\. 記得勾選「**啟用 HTTP 的持續作用**」選項 ( **Enable HTTP Keep-Alive** )

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/8366faab45540f9e7a2b-image_1045.png)

3\. 記得選對 ASP.NET 版本

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/c6f54b25ac45773239ac-image_1046.png)

4\. 記得確認「驗證及存取控制」，並啟用「**匿名存取**」與「**整合式 Windows 驗證**」

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/14aedcc1f67e447077c3-image_1047.png)

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/1bd064b95a55d3f4af0d-image_1048.png)

5\. 如果你先安裝 .NET Framework 1.1 才安裝 IIS 的話，那麼你必須手動重新註冊 .NET 1.1 到 IIS 裡

```
c:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_regiis.exe -i
```

   註冊完後記得要修改「網頁服務延伸」把 ASP.NET v1.1.4322 設為「已允許」才行！

  ![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/e79b5df7537846fa2776-image_1049.png)

6\. 確認你的 **應用程式設定** 裡的 **應用程式副檔名對應** 有支援 **DEBUG** 指令動詞

Visual Studio .NET 2003 的除錯器 (Debugger) 由於會跟 IIS 溝通，但溝通的細節不多文件提及，後來我確認 Debugger 與 IIS 之間就是透過單純的 HTTP 做溝通而已，而溝通過程中會用到 DEBUG 這個 HTTP 指令動詞，所以必須確認你要除錯的 ASP.NET 頁面必須有支援 DEBUG 這個 HTTP 指令動詞 才行！

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/ae7fcfa747a2662ebb94-image_1050.png)

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/7971c97745fc95c13b3a-image_1051.png)

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/c9f7cb27288c840fa69d-image_1052.png) 

備註：有人提到如果無法進入偵錯，也有可能是因為 Windows 防火牆的關係，不過預設應該都能透過本機存取才對，如果你是透過遠端偵錯，那麼請務必開啟 HTTP Port 80 的連線才能正常開啟偵錯模式。

我認為若你已經確認過以上 6 點設定，應該能解決超過 99% 的問題，不過以上卻無法解決我這次遭遇的問題，因為我最後發現，我的開發環境之所以無法啟動偵錯是因為有個 ISAPI 擴充模組搞的鬼，這個模組就是知名的 UrlScan 模組，因為在 UrlScan 模組的預設設定中是不允許 DEBUG 指令動詞的，所以必須手動加上 DEBUG 才能讓 Visual Studio .NET 2003 啟動偵錯！

UrlScan 的設定檔在 **C:\\WINDOWS\\system32\\inetsrv\\urlscan\\UrlScan.ini**

請參照下圖新增 DEBUG 上去即可：

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/642a746e7c49934158fe-image_1053.png)

我用了 5 個小時換來知道要在這個檔案輸入 5 個字元的知識，這實在太貴啦！ XD

**相關連結**

-   [安裝 Visual Studio .NET 2003 開發主機筆記](/post/2008/11/28/Visual-Studio-NET-2003-Development-Machine-Install-and-Setup-Note.aspx)
-   [偵錯 Web 應用程式：錯誤和疑難排解](http://msdn.microsoft.com/zh-tw/library/h35f56yz\(v=VS.80\).aspx)

-   [錯誤：無法在 Web 伺服器上啟動偵錯](http://msdn.microsoft.com/zh-tw/library/dwesw3ee\(VS.80\).aspx)

-   [Error: Unable to Start Debugging on the Web Server](http://msdn.microsoft.com/en-us/library/dwesw3ee%28v=vs.71%29.aspx)
-   [偵錯時，出現錯誤：無法在web伺服器上啟動偵錯....](https://groups.google.com/group/microsoft.public.tw.dotnet.framework.aspnet/browse_thread/thread/b6d285480721bd78/e3a8c22fbb42aec4?hl=zh&lnk=gst&q=%E9%98%B2%E7%81%AB%E7%89%86+%E9%99%A4%E9%8C%AF#e3a8c22fbb42aec4)
-   [Unable to Start Debugging on the Web Server](http://ryanfarley.com/blog/archive/2005/08/23/8540.aspx)
-   [INFO: Common Errors When You Debug ASP.NET Applications in Visual Studio .NET](https://web.archive.org/web/20140815152455/http://support.microsoft.com/kb/306172/en-us)
-   [BUG: "Unable to start debugging on the Web server" error message when you run an ASP.NET Web application](https://web.archive.org/web/20110526081320/http://support.microsoft.com:80/kb/814717)
-   [PRB: "Unable to start debugging on the Web server" error message when you debug ASP.NET applications](https://web.archive.org/web/20140917222748/http://support.microsoft.com/kb/306165)
-   [You receive error 401.1 when you browse a Web site that uses Integrated Authentication and is hosted on IIS 5.1 or a later version](http://support.microsoft.com/?kbid=896861)
-   [VS2003 開發 ASP.NET 1.1 常見問題](http://chuiwenchiu.wordpress.com/2007/03/25/vs2003-%E9%96%8B%E7%99%BC-asp-net-1-1-%E5%B8%B8%E8%A6%8B%E5%95%8F%E9%A1%8C/)
-   如何在vs.net中 debug asp.net
-   [\[Visual Studio ASP.NET\] 出現 錯誤：無法在 Web 伺服器上啟動偵錯 (Unable to Start Debugging on the Web Server)](http://felixhuang.pixnet.net/blog/post/21623830-%5Bvisul-studio-asp.net%5D-%E5%87%BA%E7%8F%BE-%E9%8C%AF%E8%AA%A4%EF%BC%9A%E7%84%A1%E6%B3%95%E5%9C%A8-web-%E4%BC%BA%E6%9C%8D)
