Мой сайт 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>