У меня есть веб-сервис WebAPI. Я возвращаю строку 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 call или какой-либо другой клиент? – Newse
Мне интересно, как данные визуализируются. Повторное добавление тысяч строк в таблицу html может легко замедлить работу браузера до craw, если эта таблица прикреплена к DOM. – JayC