Di situs web ASP.NET, apakah kelas statis unik untuk setiap permintaan web, atau mereka dipakai setiap kali diperlukan dan GCed setiap kali GC memutuskan untuk membuangnya?
Alasan saya bertanya adalah karena saya telah menulis beberapa kelas statis sebelumnya di C # dan tingkah lakunya berbeda dari yang saya harapkan. Saya akan mengharapkan kelas statis menjadi unik untuk setiap permintaan, tetapi sepertinya bukan itu masalahnya.
Jika mereka tidak unik untuk setiap permintaan, apakah ada cara untuk memungkinkannya?
UPDATE:
Jawaban yang diberikan oleh driis tepat seperti yang saya butuhkan. Saya sudah menggunakan kelas singleton, namun menggunakan contoh statis dan karenanya dibagikan di antara permintaan bahkan jika pengguna berbeda yang dalam hal ini adalah hal yang buruk. Menggunakan HttpContext.Current.Items
memecahkan masalah saya dengan sempurna. Bagi siapa saja yang menemukan pertanyaan ini di masa depan, ini adalah implementasi saya, disederhanakan dan dipersingkat sehingga mudah untuk memahami polanya:
using System.Collections;
using System.Web;
public class GloballyAccessibleClass
{
private GloballyAccessibleClass() { }
public static GloballyAccessibleClass Instance
{
get
{
IDictionary items = HttpContext.Current.Items;
if(!items.Contains("TheInstance"))
{
items["TheInstance"] = new GloballyAccessibleClass();
}
return items["TheInstance"] as GloballyAccessibleClass;
}
}
}
filterContext.Result = new RedirectResult(...)
Anda akan kehilangan item Anda karena HttpContext baru akan dibuat. Lebih detail di sini: stackoverflow.com/questions/16697601/…