私の MVC 4 サイトでは、jQuery Ajax を使用してサイトの一部を更新しています。私のサイトは主に、基盤となる SQL データベースの情報を変更するために使用されています。私の問題は、サーバーをローカルで実行している場合でも、ランダムにサーバーが PartialView を返さないことです。
Windows 8 で Visual Studio 2012 を使用し、Azure プラットフォームでサーバーを実行しています。
サーバーがデータを返さないという部分を言い換える必要があります。19 秒後に、クライアントはデータのフェッチを再試行し、通常は成功しますが、データを 2 回返し (レンダリングは 1 回のみ)、各戻り値は同じデータを保持するためです (そうすべき)。サイトはまだ機能していますが、19 秒の遅延が問題です。
- /Trace.axd は、19 秒の待機とステータス コード 200 以外の問題を明らかにしません。
- データベース接続は正常に機能し、サーバーはコードの最後に到達し、PartialView をレンダラーに返します。
- ブラウザのリンクから PartialView を直接呼び出そうとすると、同じ問題が発生します。
- 平均して 20 回の呼び出しごとに 1 回発生します (少なくともここでローカルでテストしている間)。
- Chrome Developer Tools は、13 バイトのデータ (ヘッダーであると想定) を取得した後、19 秒間待機し、最終的に完全なデータを 2 回受信することを示しています。
ほとんどの場合、サイトは問題なく動作しますが、構成に根本的な問題があるか、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>