私のアプリケーションでは非常に奇妙な動作が見られます。
plsこれを見てください:
特定のページがajax経由で5つのAPI操作に到達します。奇妙なことは、同時に実行すると同時に実行すると、応答時間の合計が逐次的なものよりも10〜100倍遅いことです。
私のアプリケーションには2種類の遠隔測定ログがあります。 1つは、MS自身によって提供されるアプリケーションの洞察、およびBeginRequest
とEndRequest
イベントを処理する初歩的なHttpModuleです。
物事は、両方とフィドラーからの情報が一貫していないということです。 httpModuleログは、は常にと一致しますが、要求が順次発行されるときにはアプリケーションの洞察のみが一致します()。
私がアプリケーションの洞察力から得たデータは、要求が常に逐次的であると信じています。「return Json(myObject);」の後にはどうなりますか?
データベーストランザクション関連の問題(読み取り操作、デッドロックが発生していないため)、コードロック(ロックが発生しない)などがありました。 "その動作は100%一貫しています。今、私は見て1つだけの場所:finally
ブロックとEndRequest
イベントの処理の間の場所があります。
だから、どうなりますか?この「遅れ」の原因は何か?
追加情報:
アプリケーション洞察ロギングはこのようなものです:
public JsonResult DoSomething(int id)
{
#region Trace
Stopwatch st = Stopwatch.StartNew();
RequestTelemetry reqTel = new RequestTelemetry();
TraceTelemetry traceTelemetry = new TraceTelemetry();
traceTelemetry.Message = "Doing Somthing";
traceTelemetry.SeverityLevel = SeverityLevel.Verbose;
_logger.TrackTrace(traceTelemetry);
#endregion
try
{
var something = Work();
#region Trace
traceTelemetry = new TraceTelemetry();
traceTelemetry.Message = "Returning Work";
traceTelemetry.SeverityLevel = SeverityLevel.Verbose;
_logger.TrackTrace(traceTelemetry);
#endregion
return Json(something);
}
catch
{
return Json(0);
}
finally
{
#region Trace
st.Stop();
reqTel.Duration = st.Elapsed;
reqTel.Name = "DoSomething";
reqTel.Url = HttpContext.Request.Url;
reqTel.Properties.Add("Message", "Finally Block for DoSomething");
reqTel.Properties.Add("TimeStamp", DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss.fff"));
_logger.TrackRequest(reqTel);
#endregion
}
}
セッションでは、HTTPContext.Session権限を意味しますか? – Leonardo
@レオナルド正確に – tpeczek
私はReadOnlyの代替案を実装しました。たくさん! – Leonardo