簡體   English   中英

首次嘗試調試時出現“無法在 Web 服務器上開始調試”錯誤

[英]"Unable to start debugging on the web server" error on first time debug attempt

我四處搜索(SO和其他谷歌搜索)但找不到任何解決這個問題的方法。

我的解決方案包含多個項目:一些庫、MVC 應用程序、WebAPI。 這個問題開始出現在一些新創建的 WebAPI 項目中,18 個項目中只有 2 個。

每當我更改代碼並嘗試在 Visual Studio(本地 IIS)中運行調試器時,都會收到以下錯誤消息:

無法在 Web 服務器上開始調試。 底層連接已關閉:預期保持活動的連接已被服務器關閉

如果我在該錯誤消息上單擊“ OK ”並再次開始調試,它工作正常。 因此,基本上總是需要 2 次嘗試才能讓調試器使用最新代碼運行。

該應用程序在 IIS 中的默認網站和應用程序池下運行,大部分默認設置。 解決方案中的所有內容都針對 .net 461。Visual Studio 2017 是最新版本 (15.7.6),我還安裝了最新的 .NET 框架。 VS 以管理員身份運行。

該問題似乎不是由於本地設置引起的,因為其他人運行此解決方案並嘗試調試有此問題的 2 個項目時也會發生此問題。

有什么方法可以進一步調試並弄清楚為什么會這樣?

編輯: 取得了一些進展,問題似乎發生了,因為 Application_Start()中出現了問題。 在每個函數調用之間添加一堆日志后,似乎原因在於 WebAPI 的注冊,特別是在通過 Swashbuckle NuGetPackage 啟用 Swagger 時。 我會保持這篇文章的開放,但也會提出一個關於 Swashbuckle 的問題。

這是一條紅鯡魚,經過多次復制,它掛在GlobalConfiguration.Configure(WebApiConfig.Register);的末尾。 .

查看 IIS 日志,我看到很多類似這樣的 DEBUG 條目:

2018-08-09 13:32:54 127.0.0.1 DEBUG /MyApp/debugattach.aspx - 80 - 127.0.0.1 - - 401 0 0 7240

config.EnsureInitialized()似乎是可能掛起的事情之一,因為它是在注冊結束時執行的。 尚不知道可能的原因。

以管理員模式運行 Visual Studio

我在舊版 ASP 網站上遇到了類似的問題。 該應用程序在 web.config 中啟用了非常嚴格的請求過濾。 這產生了破壞 Visual Studio 將調試器附加到瀏覽器的能力的意外影響。

我們 web.config 中的違規行位於verbs節點中:

<configuration>
  <system.webServer>
    <security>
      <requestFiltering>    
        <verbs allowUnlisted="false">
          <add verb="GET" allowed="true" />
          <add verb="POST" allowed="true" />
        </verbs>
      </requestFiltering>
    </security>
  </system.webServer>
</configuration>

刪除它們后,錯誤就消失了,我可以運行正常的調試會話

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM