私のプログラムは、いくつかのファイル操作を 1 つの単位として扱う必要があります。ケースの重要な手順のいくつかは次のとおりです。
- ディレクトリ内のファイルを削除します。
- いくつかのデータを検証します。データが無効な場合はロールバックします。
- ディレクトリにファイルをアップロードします。アップロードが失敗した場合は、ロールバックします。
- 変更をコミットします。
トランザクションに関するこの要件を提起するのは、ユーザーが VPN を使用して私の Web サイトにアクセスする場合があり、VPN 接続が非常に不安定になる可能性があるためです。
3 番目のステップが失敗した場合、1 番目のファイルと新しくアップロードされたファイルはすべて失われます。
私のコードの一部:
DeleteTheOlderDT(path, FileName);
this.fuTemplateName.SaveAs(path + FileName);
_t.FileName = FileName;
if (!System.IO.File.Exists(path + FileName))
{
ArrayList ItemList = new ArrayList();
ItemList.Add("Uploading failed, please upload again!");
btlError.DataSource = ItemList;
btlError.DataBind();
_t.FileName = "";
return;
}