次のコードを使用して、Azure アプリのデータベースをクリーンアップしています。
protected void Application_End(object sender, EventArgs e)
{
core.cleanUpDB();
}
デバッグ中にローカル マシンでこれが実行されないようにすることはできますか? デプロイされた Azure アプリでのみこれを実行したいだけです。
前もって感謝します。
HttpRequest.IsLocalを使用して、ローカル リクエストとサーバー リクエストを区別できます。
protected void Application_End(object sender, EventArgs e)
{
if(!System.Web.HttpContext.Current.Request.IsLocal)
core.cleanUpDB();
}
他の回答は特定のシナリオで機能する可能性がありますが、Windows Azure には関係ありません。Windows Azure で実行しており、エミュレーターで実行していないかどうかを確認する唯一の方法 (Web ロールがあると仮定) は、次のようになります。
protected void Application_End(object sender, EventArgs e)
{
if (RoleEnvironment.IsAvailable && !RoleEnvironment.IsEmulated)
core.cleanUpDB();
}
条件付きコンパイルを使用します。MSDN の記事は、ここの小さなスペースに書き込めるよりもはるかに優れた説明を提供します。
VB.net では、次のようなものを使用します。
'#If DEBUG Then
'only do this while debugging...
'#End If
' マークを削除してください - スタック オーバーフローは "#" マークを BOLD として使用します.... C# でもコンパイルする必要があると思います。