【发布时间】:2013-11-12 05:43:03
【问题描述】:
我有一个返回联系人列表的简单 Web API:
public class ContactsApi : ApiController
{
public List<Contact> GetContacts()
{
Stopwatch watch = new Stopwatch();
watch.Start();
// Doing some business to get contacts;
watch.Stop();
// The operation only takes less than 500 milliseconds
// returning list of contacts
}
}
由于我使用Stopwatch 来测试数据检索性能,很明显它只需要不到一秒钟的时间。但是,当我通过 Chrome 浏览器向 GetContacts 操作发出请求时,需要 4 到 5 秒才能返回数据。
显然延迟与我的数据检索代码无关。在我看来,Web API 运行缓慢。但我不知道如何调试和跟踪它。
是否有任何实用程序来记录 ASP.NET HTTP 请求处理管道的时间?我的意思是,像Navigation Timing 这样的东西来表明每个事件发生在什么时间?
【问题讨论】:
-
你试过fiddler吗?
-
我认为您需要缩小减速的范围。可能是 ASP.NET,可能是 IIS,可能在网络层。您是否尝试过附加调试器并在函数的第一行放置断点?如果没有,请执行此操作,看看它是在 4.5 秒后还是立即调用。 4.5 秒是很长的时间,听起来和我有关。
-
@amrswalha,提琴手在这里帮不上忙。问题出在服务器上。 OP 正在谈论 ASP.NET HTTP Process Pipeline。
标签: c# asp.net performance asp.net-mvc-4 asp.net-web-api