ASP.NET aynı oturum için eşzamanlı isteklere izin vermiyor; Bir kullanıcının bir seferde sadece 1 istekte bulunabileceği anlamına gelir. Örneğin ASP.NET oturumları kullanırken eşzamanlılık isteğini zorlamak mümkün mü?
bizTest1.aspx
olduğunu varsayalım:
public partial class Test1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Session["test"] = 1;
System.Threading.Thread.Sleep(int.Parse(Request.QueryString["timeout"]));
}
}
... ve Test2.aspx
:
public partial class Test2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Session["test"] = 1;
Label1.Text = DateTime.Now.ToString("dd/MM/yy HH:mm:ss");
}
}
biz Test1.aspx?timeout=10000
ziyaret edin ve sonra hemen ziyarette Page2.aspx
sonra, 2 isteği zorunda kalacak
Bugün bunu öğrendim ve ASP.NET'i 5 yıldır kullanıyorum! Bir MSDN sayfasının (ASP.NET Session State Overview) en altında okuyana kadar gerçekten inanamadım.
Eşzamanlılığı zorlamanın bir yolu var mı? Diğer bir deyişle, sayfaları daha hızlı yapmak ya da uzun koşulan kodu arka plan iş parçacığına taşımaktan başka. Sadece oturumu okuyabileceğinin farkındayım, fakat bunun pratik bir seçenek olduğundan emin değilim.
vay, 1.0 beri kullanıyorum tüm Uygulamaya Oturum davranışını ayarlamak için kullanılabilir ve ayrıca kadar oldu :(bilmiyordum yeni HttpContext.SetSessionStateBehavior yöntemi eklendi Çalıştığım uygulamaların hiçbirinde sorun değil, ama bir şey için oturumu kullanan ve daha sonra tarayıcıya büyük bir indirme dosyası göndermeye devam eden bir uygulamada ne yapılacağını merak ediyorum. Bir dosya işleyicide oturumu devre dışı bırakmamı arkamda beklediğimizden, gelecekte oturumun ilerlemesini planlamayı planladığımızda, baş ağrısının neden indirme uygulamasını engellediğini merak ediyorum ... – eglasius
Bundan böyle olumlu Benim de aklımın arkasında soru vardı.Çok yakından ilişkili: bu eşzamanlılık kısıtlaması aynı zamanda ASMX web servis çağrıları için de geçerlidir [WebMethod (EnableSession = true)]? – mikemanne
Testlerimde şimdiye kadar nbolton daha da beterdi; Test2 Session'a erişemediyse/değiştiremese bile, Test1 bitene kadar hala bloke olur. Bu konuda çalışabileceğim tek yol, Test2'de EnableSessionState = "False" öğesini bir Sayfa yönergesi olarak açıkça belirlemektir. – Chris