In meiner Anwendung, wenn zwei oder mehr Benutzer angemeldet sind und wenn sie gleichzeitig auf dieselbe Seite klicken (zur exakten Zeit), dann ist der Login geändert von anderen Login. Der Code auf meiner Seite laden Ereignis ist wie folgt.Login wird von anderen Benutzern geändert, wenn 2 oder mehr Benutzer gleichzeitig auf dieselbe Seite klicken
MembershipUser mUser = Membership.GetUser();
if (mUser != null)
{
aspUserId.Value = mUser.ProviderUserKey.ToString();
DBHandler dbHandler = new DBHandler();
SqlCommand cmd = new SqlCommand();
cmd.Parameters.AddWithValue("@AspNetUserID", mUser.ProviderUserKey);
string sPMSUserId = dbHandler.GetSingleValue(cmd, "get_PMSUserId");
hdnUserID.Value = sPMSUserId;
}
else
{
Response.Redirect("~/index.aspx");
}
hdnUserID wird verwendet Wert zu übergeben select-Anweisung Parameter SQLDataSource. aspUserId wird auch verwendet, um aspnet_UserID des Benutzers zu testen. Ich teste es mit inspect-Element . Ich fand, dass es Wert von anderen Benutzer aspnet_UserID geändert wird.
in DBHandler verwendet i-Verbindungszeichenfolge als wie
string strconn = ConfigurationManager.ConnectionStrings["strconn"].ConnectionString;
mit Code wie die
public string GetSingleValue(SqlCommand sqlcmdWithParameters, string CommandText)
{
string sReturn = "";
SqlConnection sqlcon = new SqlConnection(strconn);
sqlcmdWithParameters.Connection = sqlcon;
sqlcmdWithParameters.CommandType = CommandType.StoredProcedure;
sqlcmdWithParameters.CommandText = CommandText;
try
{
sqlcon.Open();
sReturn = Convert.ToString(sqlcmdWithParameters.ExecuteScalar());
}
catch (Exception ex)
{
sReturn = "-1";
}
finally
{
sqlcon.Close();
}
return sReturn;
}
Endlich habe ich Ursache des Problems. Ja, es ist aufgrund von Cache-
auf ASPX-Seite i nehmen Richtlinie von Output als
<%@ OutputCache Duration ="1" NoStore ="true" VaryByParam ="*" %>
dies meine Seite hält für 1 Sekunde zwischenzuspeichern. Wenn eine andere Seite innerhalb von 1 Sekunden eine Anforderung stellt, wird die Seite im Cache zurückgegeben, obwohl sie von einem anderen Benutzer stammt.
Was ist Ihre Frage? –
Wie genau ist "genaue Zeit" trotzdem? Es muss schwierig sein, zwei Computer dazu zu bringen, sich zur gleichen Zeit * anzumelden. – Patrick