2014-01-10 60 views
22

我試圖在運行應用程序後對web.config進行更改。它給出了以下錯誤。保存文件'web.config'需要您停止調試會話錯誤

保存文件'web.config'需要您停止調試會話。
您想現在停止調試嗎?

我使用Visual Studio 2012

enter image description here

我認爲它必須做一些事情在Visual Studio Enable Edit and Continue功能。仍然不起作用。

+0

@WeTTTT - 我們最近從VS2010切換到VS2012。我曾經可以在沒有此錯誤的情況下更改web.config。 – Krishna

+0

我錯了。直接保存web.config時,VS2012和VS2010都能夠保持調試器連接狀態,正如我在IIS7上VS2010和VS2012上測試的那樣。您是否在使用IIS7/7.5/8或IIS Express進行調試? – tweray

+0

@WeTTTT IIS 7.5 – Krishna

回答

1

首先讓我指出一個簡短的事實。這裏有兩種不同類型的項目。

  1. 其通過選擇New WebSite從Visual Studio菜單創建的WebSite
  2. WebApplication其通過選擇New Project和選擇ASP.Net Web Forms Appplication

現在原因指出這是出於創建是簡單的。

第一個選項允許您更改web.config而不執行應用程序重置(僅在調試時)。這是因爲WebSite項目文件是在請求頁\文件時編譯的。因此,每次請求頁面時,都會編譯代碼。這也是爲什麼您可以在調試時更改代碼文件,而不會出現問題。

第二種類型是已編譯的應用程序。因此,所有代碼都是在運行時編譯的。在這種情況下,AppPool(IIS,IISExpress)監視對此文件的更改。如果這個文件發生了變化,應用程序必須重新啓動才能使更改生效。現在沒有辦法阻止這種行爲,因爲它是核心AppPool的一部分。

下面是從MSDN的摘錄:

配置的變化使應用程序域

變遷對Web.config配置設置的重新啓動文件間接導致 應用程序域重新啓動。這種行爲通過設計發生。 可以選擇使用configSource屬性來引用外部 配置文件,這些配置文件在進行更改時不會導致重新啓動。 有關更多信息,請參見章節元素中通用屬性繼承的 中的configSource。

嘗試將配置文件更改爲 沒有權限編輯文件的用戶不會導致應用程序域重新啓動 。

完整的MSDN頁面。http://msdn.microsoft.com/en-us/library/ackhksh7.aspx

正如它在這裏指出的那樣,有一個方法。通過使用configSource來引用您可能更改的外部配置文件,而不會出現問題。

我希望這會有所幫助。

+0

感謝您的回答。我們是一個Web應用程序。我猜測有一些配置值可以編輯而無需重新啓動應用程序域,但有些不是(可能是我完全錯了!!) – Krishna

+0

我不明白這是如何可能..沒有跨越多個單一測試VS版本和項目已經產生了結果。無需重新啓動應用程序就可以更改web.config的任何部分。 – Nico

+2

雖然我理解了解釋,但我的問題是:爲什麼只有在從VS2012切換到VS2013後纔開始這種行爲?在使用VS2012時,我能夠編輯web.config而無需重新啓動dubugging會話。 – Botis

0

事實上,我在使用Visual Studio 2013的Web應用程序上遇到了同樣的問題。在此之前,我使用VS2010,並沒有像您提到的那樣出現問題。

我發現不使用IIS快遞(解決辦法:(我想不出用IIS快遞)

1-您的項目只需右鍵點擊的方式,然後選擇屬性

2 - 在「Web」選項卡,選擇「本地IIS」下頁「服務器」一節

3 - 點擊「創建虛擬目錄」按鈕

中提琴,現在你已經在部署它。 iis與端口80.(因此,它將在您的「默認網站」部分運行inetmgr(IIS管理器),當然如果你沒有任何其他站點在端口80上運行)

如果你想要一個自定義的端口(即, 1234):

只是在IIS管理器中創建新的網站與1234端口,然後在VS2013編輯項目屬性您的網址爲:「http://localhost:1234/Your.Project.Name

如果任何人展示瞭如何編輯和使用web.config中繼續IIS Express,它也將不勝感激。

+2

看看我剛​​剛添加的答案,如果這仍然是您的問題。我使用的是IIS Express,現在可以編輯web.config文件,因爲我禁用了「編輯並繼續」。 –

7

我只是想添加一些東西給janv8000提出的關於編輯和繼續的評論,因爲我剛剛遇到同樣的問題並設法對其進行排序。

爲了給出一些背景知識,我有一個現有的Web應用程序,在VS 2012中創建。當我在VS 2013中調試此項目時,我可以快速編輯web.config文件而無需重新啓動調試器。然後,我在VS 2013中創建了一個新的Web應用程序,並發現當我嘗試編輯web.config文件時,我在原始問題中收到了錯誤消息。

對此的解決方案是爲單個項目禁用編輯並繼續。我強調這一點的原因是因爲在工具 - >選項 - >編輯和繼續調試器中有一個全局調試器設置。這不是導致此問題的選項。

要解決這個問題:

  1. 轉到爲Web應用程序項目的喜好(右在Solution Explorer中點擊它,進入「屬性」)。
  2. 轉到「Web」選項卡。
  3. 在此選項卡的底部是一個名爲「調試器」的部分。
  4. 取消選中「啓用編輯並繼續」。