次のコードのようなものを作成しました。
protected void Page_Load(object sender, EventArgs e)
{
Label1.Text = Session["loginid"].ToString();
}
protected void delete_click(object sender, EventArgs e)
{
delete("mail1",Session["loginid"]);
}
private int delete(string mailid, string user)
{
System.IO.Directory.Delete(Server.MapPath(@"~\files\" + user + @"\" + mailid), true);
}
削除ボタンを押すと、すべてが正常に機能し、フォルダーが削除されます。しかしその後、ページが再びポストバックされると、Label1.Text = Session["loginid"].ToString(); で NullRefrenceException が発生します。
どうしてこうなるのか...??
この Directory.Delete() メソッドを使用していない場合、すべてが正常に機能し、セッション変数が null に設定されていません。
アプリケーションをトレースしたところ、Directory.Delete() メソッドの後、セッション変数はそのままで、Directory.Delete() 後の処理でこれらのセッション変数を使用できたことがわかりました。
ただし、ページがポストバックするとすぐに、すべてのセッション変数が null に設定されます。そして、この delete() メソッドを使用していない場合、この問題は発生しません。
削除しているフォルダーは、プロジェクトのフォルダーにあります。Visual Studio を使用してこの Web サイトを実行しています。
助けてください。