【发布时间】:2019-01-14 10:27:53
【问题描述】:
我已经四处搜索(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() 似乎是可能挂起的事情之一,因为它是在注册结束时执行的。尚不知道可能的原因。
【问题讨论】:
-
禁用 IIS 应用程序池空闲关闭,或将其设置为更大的值。然后看看你是否有所改善。 (只是猜测。)
-
@AbrahamLuna 当您说“发布设置”时,是在“Web”选项卡还是“打包/发布 Web”下?我不确定是否使用了后者。
-
@AbrahamLuna 尝试调试 WebApiConfig.Register 时没有遇到断点。我认为这与附加调试器之前启动的应用程序有关。
-
@AbrahamLuna 我们所有的项目都使用Local IIS(安装在机器上)进行本地开发,在同一个站点下加载每个应用程序,都在DefaultAppPool中运行。
-
@AbrahamLuna 我创建了一个具有类似设置但依赖项较少的新项目,到目前为止我无法重现该问题,因此它看起来与其中一个依赖项有关。我将尝试逐步添加内容,直到找到中断的点并尝试以这种方式隔离罪魁祸首。
标签: asp.net visual-studio iis asp.net-web-api