Сайт MVC случайно не возвращает PartialView

Мой сайт MVC 4 использует jQuery Ajax для обновления частей моего сайта, и мой сайт в основном используется для изменения информации в базовой базе данных SQL. Моя проблема в том, что случайно сервер не вернет PartialView даже при локальном запуске сервера.

Я использую Visual Studio 2012 в Windows 8 и запускаю сервер на платформе Azure.

Я должен перефразировать часть о том, что сервер не возвращает его, потому что через 19 секунд клиент повторяет попытку извлечения данных, и обычно это удается, но он возвращает их дважды (только один раз), и каждый возврат содержит одни и те же данные (как должно). Хотя сайт все еще работает, проблема в 19-секундной задержке.

  • /Trace.axd не выявляет никаких проблем, кроме 19-секундного ожидания и кода состояния 200.
  • Соединение с базой данных работает хорошо, и сервер достигает конца кода, где он возвращает PartialView средству визуализации.
  • Та же проблема возникает при попытке вызвать PartialView напрямую через ссылку в браузере.
  • Это происходит в среднем один раз на каждые 20 вызовов (по крайней мере, пока я тестирую это здесь локально).
  • Инструменты разработчика Chrome показывают, что он извлекает 13 байтов данных (которые, как я предполагаю, являются заголовком), после чего он ждет 19 секунд и, наконец, дважды получает полные данные.

Я думаю, что либо есть основная проблема с моей конфигурацией, либо с возвратом PartialViews, хотя большую часть времени сайт работает нормально.

Если бы я мог получить какую-то подсказку относительно моего следующего шага в отладке этой ошибки или хорошую теорию проблемы, было бы неплохо.

С наилучшими пожеланиями

Михаил (D3vinno)

Пример кода из контроллера

public ActionResult _List_Product() {
  Database db = new Database(Session["database"] as string);
  db.Connect();
  DataTable dataTable = null;
  using (SqlCommand command = db.GetSqlConnection().CreateCommand()) {
    command.CommandText = string.Format("SELECT [product].[id], [product].[title] FROM [product]");
    SqlDataReader sdr = command.ExecuteReader();

    dataTable = new DataTable { TableName = "product" };
    if (sdr != null) {
      dataTable.Load(sdr);
    }
  }
  db.Close();
  return PartialView(dataTable);
  }

И пример просмотра

@model System.Data.DataTable
@{
    string type = "_Product";
}

<p>
    <button class="btn span8" onclick="SetContent('@type', 'new')">New</button>
</p>

<table class="table row-fluid table-condensed" data-provides="rowlink">

@foreach (System.Data.DataRow item in Model.Rows) {
    <tr id="show-@item["id"]">
        <td id="search-@item["id"]">
            <b> @item["title"] </b>
        </td>
        <td>
            <button class="btn pull-right" onclick="SetContent('@type',@item["id"])">Edit</button>
        </td>
    </tr>
}

</table>

person D3vinno    schedule 02.07.2013    source источник


Ответы (1)


Не похоже на проблему с частичным просмотром. Если у вас есть сомнения по этому поводу, отправьте некоторые статические данные, а не попадайте в базу данных.

Лучшим вариантом было бы выбрать 3 верхние строки в запросе и найти результат.

Думаю, это дало бы некоторое направление решению!

person Moin    schedule 10.07.2013