我一直在尝试使用 VS.NET 2008 来分析 ASP.NET MVC 应用程序,但失败了。当我尝试启动分析会话时,我从 VS.NET 收到通用服务器 500 错误:
网站无法正确配置;获取 ASP.NET 进程信息失败。请求“http://localhost:4750/foo/VSEnterpriseHelper.axd”返回错误:远程服务器返回错误:(500) 内部服务器错误。
我尝试了几件事,包括:
全新的 ASP.NET MVC 应用程序(即文件 | 新建 | 项目)将毫无问题地进行分析,因此我知道我的机器能够分析此类应用程序。
还有哪些常见和不常见的事情会阻止 VS.NET 在 ASP.NET 应用程序上启动分析会话?
在与分析器角力之间,您可以通过此方法轻松地从时间角度清楚地了解程序正在做什么。它所揭示的通常是令人惊讶的。
补充:我做了相当多的调整,我对这些事情有不同的看法,例如:挂钟时间才是最重要的,单独的指令比函数/方法更重要,调用树和图表很有趣,但是没有人知道它们在性能方面的真正含义,演示都是像 Mandelbrot 这样的不自然的玩具,个人样本才是赚钱的地方,而不是摘要。
例如,调优.NET应用程序,启动需要很长时间。因此,在这段时间内,我对其进行了多次采样并询问“它在做什么以及为什么?”它通过资源中的 ID 查找字符串(因此字符串可以国际化)。有必要吗?如果我查看特定的字符串,它们永远不需要国际化。没有分析器可以告诉我这一点,但样本会立即找到它。
如果您无法使用 VS.Net 分析,有一些第三方工具可能会有所帮助。显然你需要支付这些费用。
ANTS在这里有一个免费演示:http://www.red-gate.com/products/ants_memory_profiler/index_v2.htm
JetBrains 还有一个提供分析的跟踪工具(我没有使用过这个,但我喜欢他们的 Resharper 工具,所以我怀疑这会很好):http://www.jetbrains.com/profiler/index.html
这是我如何让它在 VS2010 下为我的 ASP.NET 网站工作
确保您的 web.config 可写
创建一个新的表演会话,并且不要向其中添加任何项目
而是添加您网站的 URL“目标 -> 右键单击 -> 添加现有网站” 确保运行网站一次,以便 IIS 进程或 ASP.NET 服务器进程启动并运行
现在转到您的站点并执行任何场景,然后返回您的 VS 并单击“停止”。
不知道你是否见过这个: http://social.msdn.microsoft.com/Forums/en-US/tfsbuild/thread/8366799f-7bfd-4c80-a5f1-11a57ecfd966/
但它似乎报告了与您相同的问题,并且编写 Profiler 工具的 MSFT 开发人员做出了回应:)
如果您使用外部 AppSettings 进行拆分配置设置,则可能会导致这样的错误。
Visual Studio 探查器似乎在识别您通过
包含 AppConfig 设置时出现问题<appSettings configSource="App_Config\AppSettings.config" />
并且需要在那里插入分析所需的任何 AppSettings,而不是直接插入 web.config。
就我而言,将 AppSettings 移回 web.config 解决了该问题。