我有一个WebAPI Web服务。我正在返回一个Json字符串。控制器返回ActionResult,但我也试过使它成为JsonRequest。这并不影响结果。ASP.NET MVC JsonResult非常慢
下面是相关的代码(记住,函数原型只是返回的ActionResult:
Debug.WriteLine(string.Format("{0} - get campaign data: {1}", DateTime.Now.ToString("hh:mm:ss.fff"), 1));
// Here is the data we're going to need
var currentUser = context.Users.Where(n => n.UserID == userId).Single();
var locations = context.Locations.Where(n => n.CampaignID == campaign.CampaignID && n.Inactive == false);
var questions = context.Questions.Where(n => n.CampaignID == campaign.CampaignID && n.Inactive == false).Include(n => n.QuestionType).ToList().OrderBy(q=> q.SortOrder);
var dispositions = context.Dispositions.Where(n => n.CampaignID == campaign.CampaignID).ToList().OrderBy(d=> d.SortOrder);
var answers = context.Answers.Where(a => a.Inactive == false).Join(locations, answer => answer.LocationID, loc => loc.LocationID, (ans, loc) => ans).ToList();
var contacts = context.Contacts.Where(c => c.Inactive == false);
Debug.WriteLine(string.Format("{0} - get campaign data: {1}", DateTime.Now.ToString("hh:mm:ss.fff"), 2));
var json = new
{
success = true,
data = new
{
User = currentUser.ToModel(),
Campaign = campaign.ToModel(),
Location = locations.ToList().ToModelsSpecial(answers, contacts),
Question = questions.OrderBy(q => q.SortOrder).ToModelsSpecial(),
Disposition = dispositions.ToModels(),
},
message = (string)null
};
Debug.WriteLine(string.Format("{0} - get campaign data: {1}", DateTime.Now.ToString("hh:mm:ss.fff"), 3));
var response = Json(json, JsonRequestBehavior.AllowGet);
Debug.WriteLine(string.Format("{0} - get campaign data: {1}", DateTime.Now.ToString("hh:mm:ss.fff"), 4));
return response;
你可以看到我的Debug.WriteLine调试输出需要多长时间,所以我可以跟踪它。
所以问题是,所有的包括数据库查询的处理只需要大约2秒钟。它让所有的方式,通过这件事在那个时候。
可是我不想得到的结果客户再过25秒我正在使用像Fiddler这样的程序来测试它。这一切都在我的本地机器上,所以互联网不是问题。
返回的JSON字符串的大小为800K。由于这是所有本地我不会期望花25秒。
我运行在IIS8网站上的Windows 8
谁能告诉我,我这么长的时间的ActionResult要回客户端是什么服用?
谁在使用此调用 - jquery ajax调用或其他客户端? – Newse
我想知道数据如何呈现。如果将表连接到DOM,反复将数千行添加到html表中可能会使浏览器变慢。 – JayC