是否可以检测 .NET BCL、ASP.NET、WCF 或 ADO.NET 程序集?

Posted

技术标签:

【中文标题】是否可以检测 .NET BCL、ASP.NET、WCF 或 ADO.NET 程序集?【英文标题】:Is it possible to instrument .NET BCL, ASP.NET, WCF or ADO.NET assemblies? 【发布时间】:2011-03-23 21:27:55 【问题描述】:

我想诊断一些与实体框架相关的性能问题,但目前我在 System.Linq.Queryable 上只得到大量数据。我可以以某种方式配置 VS Studio 2010 Ultimate 以在分析/检测中包含引用的 .NET 程序集吗?我下载了 .NET 3.5 源代码和符号,并尝试允许它们进行调试,但没有帮助。

【问题讨论】:

您的性能问题很可能不在实体框架或 .NET 代码中,而是在 EF 生成的 SQL 代码中。可以通过更好的数据库设计和其他因素来改进 SQL。虽然文章有点过时,但您可以在这里找到一些指导:codeproject.com/KB/database/PerfEntityFramework.aspx @Robert:我很确定它不在 SQL 中。我已经在 SQL 分析器中检查了它,并且还评估了创建的查询的执行计划。 您是否探索过延迟加载与急切加载以及类似问题? 如果能在IDE下运行,能不能try this? 很简单,但是会发现问题。 【参考方案1】:

您不能修改已签名的程序集,这包括检测 .Net 程序集。但是sample profiling 可以带你走很长一段路,而且是非侵入性的(不需要仪器)。

【讨论】:

不幸的是仍然没有运气。我能够调试 .NET 程序集并单步执行它们的代码,但采样也不会显示调用的函数。 @Remus:希望这是缺少的步骤,但我不知道如何配置它。我刚刚尝试直接在 System.Data.Entity.dll 上运行采样,但我再次仅从我的代码中收到示例。 试试msdn.microsoft.com/en-us/library/bb385766%28v=VS.100%29.aspx中的建议。 上次检查时,VS 采样器只查看 CPU 使用率。它在 I/O 期间不采样。这意味着,即使程序将 99% 的时间都花在了不必要的 I/O 上,它看起来也像是受 CPU 限制的问题。

以上是关于是否可以检测 .NET BCL、ASP.NET、WCF 或 ADO.NET 程序集?的主要内容,如果未能解决你的问题,请参考以下文章

检测地理位置 asp.net mvc - 托管在亚马逊 aws

使用 javascript/jquery 检测 Asp.Net 表单是不是有效

ASP.NET MVC 中的 RSS 源

检测何时在 ASP.NET 中禁用 JavaScript

检测ASP.NET中禁用JavaScript的时间

asp.net 另存为 PDF文件