3

我有一个 ASP.NET MVC 站点,我正在 Visual Studio 2013 的本地 IIS 上进行调试。在某些情况下,我会在构建时弹出一个对话框,如下所示:

Intellitrace 不可用,因为另一个应用程序正在 Web 服务器上进行分析

Intellitrace 不可用,因为另一个应用程序正在 Web 服务器上进行分析

如果我选择“否”,则构建将中止,如果我选择“是”,则无法在断点上使用 Intellisense。这是什么原因造成的?

关闭 Visual Studio 的所有实例,停止应用程序池和 Web 服务器,然后再次重新启动它们并不能解决此问题。重启也不行。

如果我查看任务管理器的详细信息面板,我只能看到 w3wp.exe 的一个实例,它在我停止应用程序池后消失,所以我假设它与分析的挂钩不是通过我认为的工作进程进行的是 VS 如何附加自己进行调试。

Web 服务器上没有其他应用程序,我在这台机器上没有自定义 WMI。如果我在 VS 中查看性能资源管理器面板,它是空的,如果我选择附加/分离操作,然后在结果窗口“将探查器附加到进程”中,如果我按附加列排序,我看不到任何东西附加到任何东西。

我应该在哪里寻找这个问题的根源?

4

1 回答 1

1

所以问题是分配给该网站的 ApplicationPool 与该网站具有相同的名称。即网站名称contoso和应用程序池命名contoso

我不确定为什么这是一个问题或事情在哪里中断,但我会承认这是不好的(匆忙的)命名习惯。

您可以拥有一个包含网站名称的应用程序池,即contosoAnythingElseHereIntelliTrace 将起作用,但如果这两个字符串完全相同,您最终将获得我的问题中描述的 IntelliTrace 锁定或关于另一个应用程序已经“记录”的错误消息的变体.

除了我公认的糟糕的命名习惯之外,我愿意打赌这是 IntelliTrace 中的一个错误,源于缺乏强类型。

我的理论是,某种过滤器在某处仅使用 AppPool 名称作为类型字符串,而不是查找具有 name = 的 AppPool 类型contoso

由于站点和 AppPool 具有相同的名称,因此某处可能会对某种锁感到困惑。然而,如果它们输入正确,它们是否具有相同的名称并不重要。

如果有人有更好的想法或可以让我直截了当,我会全神贯注,但如上所述,正确的命名做法无需进一步讨论。

于 2015-04-18T05:07:27.030 回答