ASP.NET lässt gleichzeitige Anfragen für dieselbe Sitzung nicht zu; Dies bedeutet, dass ein Benutzer nur eine Anfrage gleichzeitig stellen kann.Kann die gleichzeitige Verwendung von Anträgen erzwungen werden, wenn ASP.NET-Sitzungen verwendet werden?
Zum Beispiel, sagen wir haben Test1.aspx
:
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"]));
}
}
... und 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");
}
}
Wenn wir Test1.aspx?timeout=10000
besuchen, und dann unmittelbar nach dem Besuch Page2.aspx
, wird die zweite Anforderung müssen Warten Sie 10 Sekunden bis die erste Anfrage beendet ist.
Ich habe das gerade heute gelernt, und ich verwende ASP.NET seit 5 Jahren! Ich glaube es nicht wirklich, bis ich es am Ende einer MSDN-Seite (ASP.NET Session State Overview) gelesen habe.
Gibt es also eine Möglichkeit, die Nebenläufigkeit zu erzwingen? Dies bedeutet, dass Seiten nicht schneller erstellt werden oder lang laufender Code in einen Hintergrundthread verschoben wird. Ich bin mir bewusst, dass Sie die Sitzung nur lesen können, aber ich bin mir nicht ganz sicher, ob dies eine praktische Option ist.
wow, ich habe es seit 1.0 verwendet und auch nicht wusste, dass :(Es war Ein Problem, das in keiner der Apps auftaucht, mit denen ich gearbeitet habe, aber ich frage mich, was das in einer App bewirken würde, die die Sitzung für etwas verwendet und dann eine große Download-Datei an den Browser sendet Flashback von mir Deaktivierung der Sitzung in einem Dateihandler, wie wir die Sitzung aus Prozess in der Zukunft verschieben wollten, ich frage mich, wie groß die Kopfschmerzen gewesen wäre, herauszufinden, warum der Download die App blockiert ... – eglasius
Upvote seit diesem Frage war auch eine Weile im Hinterkopf.Sehr eng verwandt: Gilt diese Nebenläufigkeitsbeschränkung auch für ASMX-Webservice-Aufrufe, bei denen [WebMethod (EnableSession = true)]? – mikemanne
In meinen bisherigen Tests ist es noch schlimmer als nbolton beschreibt; Selbst wenn Test2 nicht auf Session zugreifen/sie ändern würde, würde es immer noch blockieren, bis Test1 beendet wurde. Die einzige Möglichkeit, die ich umgehen kann, ist, EnableSessionState = "False" explizit als eine Page-Direktive für Test2 festzulegen. – Chris