Le fil était avorté quand nous utilisons
Système.Le filetage.ThreadAbortException: Thread a été interrompue.
au Système.Le filetage.Fil de discussion.AbortInternal() à
Système.Le filetage.Fil de discussion.Abort(Objet stateInfo) à
Système.Web.HttpResponse.La fin de() à
Système.Web.HttpResponse.Redirection(String url, Boolean endResponse)
au Système.Web.HttpResponse.Redirection(String url)
taxi_selection.lnkbtnconfirm_Click(Object sender, EventArgs e)
J'ai trouvé que la solution pour cela est
Réponse.Redirect("à la maison.aspx",false);
mais là encore, cette erreur se produit.
Ce qui est une bonne solution pour cela?
mes extraits de code :
try
{
Decimal Amount = 0;
Int64 CabId = 0;
String CabName = "";
String CarImage = "";
foreach (DataListItem gr in dtlstcars.Items)
{
//if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
//{
RadioButton objcheck = (RadioButton)gr.FindControl("rdbtncarchecked");
if (objcheck.Checked == true)
{
Literal ltrid = new Literal();
ltrid = (Literal)gr.FindControl("ltrid");
Label lbtaxiname = (Label)gr.FindControl("lbtaxiname");
Label lbonewaycarprice = (Label)gr.FindControl("lbonewaycarprice");
Label lbtwowaycarprice = (Label)gr.FindControl("lbtwowaycarprice");
Image imgcar = (Image)gr.FindControl("imgcar");
if (ltrid != null && lbtaxiname != null && imgcar != null && lbonewaycarprice != null && lbtwowaycarprice != null)
{
if (lbrootype.Text == "One")
{
Amount = Convert.ToDecimal(lbonewaycarprice.Text);
}
else
{
Amount = Convert.ToDecimal(lbtwowaycarprice.Text);
}
}
CabId = Convert.ToInt64(ltrid.Text);
CabName = lbtaxiname.Text;
CarImage = imgcar.ImageUrl;
}
}
if (lbroottype.Text != String.Empty && lbrouteid.Text != String.Empty && lbfrom.Text != String.Empty && lbpickupdate.Text != String.Empty && lbto.Text != String.Empty && lbpickupdate.Text != String.Empty && lbpickuptime.Text != String.Empty)
{
Session.Add("BookingDetail", BookingDetail(lbroottype.Text, Convert.ToInt64(lbrouteid.Text), lbfrom.Text, lbto.Text, Convert.ToDateTime(lbpickupdate.Text), lbpickuptime.Text, Convert.ToDateTime(lbreturndate.Text), String.Empty, CabId, CabName, CarImage, Amount, txtPickupaddress.Text, txtDropaddress.Text, txtlandmark.Text, txtname.Text, ddmobilestdcode.SelectedValue, txtmobileno.Text, ddalternatestdcode.SelectedValue, txtalternateno.Text, txtemail.Text, lbdays.Text));//3
Session.Remove("cart");
Session.Remove("editcart");
Response.Redirect("confirm");
}
else
{
Response.Redirect("home");
}
}
catch (Exception ext)
{
String msg = ext.Message;
da.InsertRecordWithQuery("insert error_tbl values('" + msg + "')");
}
source d'informationauteur Kavita
Vous devez vous connecter pour publier un commentaire.
http://support.microsoft.com/kb/312629
comme vous pouvez le voir ici, le problème est que vous essayez d'utiliser la réponse.rediriger dans un bloc try/catch. C'levée d'une exception.
Votre solution de modification de l'appel à
Response.Redirect(url, false)
devrait fonctionner. Vous devez vous assurer de le faire sur chaque Réponse.Appel de redirection.Notez également qu'il continuera d'exécution, de sorte que vous aurez à gérer (l'empêcher de continuer d'une autre manière).
De cette façon, la Redirection fonctionne lorsque vous ne laissez pas le reste de la page de continuer à exécuter. Ses arrêter le fil et jeter cette exception d'abandon. Vous pouvez simplement l'ignorer:
Attention
Si vous appelez la redirection avec arrêt le reste du traitement, un hack qui peut arrêter le processus de redirection à l'aide d'un plugin comme le NoRedirect pouvez voir votre reste de la page .!
Pour prouver mon point ici, je fais une question à propos de : Rediriger vers une page avec endResponse à vrai VS CompleteRequest et le fil de sécurité
Response.Redirect
sans préciser laendResponse
paramètre commefalse
(la valeur par défaut esttrue
) va appelerResponse.End()
en interne et, par conséquent, sera le déclencheur d'uneThreadAbortException
pour arrêter l'exécution.L'une des deux choses sont recommandées ici:
Si vous avez besoin de mettre fin à la réponse, ne le faites pas dans un try/catch. Ce sera la cause de la redirection à l'échec.
Si vous n'avez pas besoin à la fin de la réponse, appelez ceci à la place:
Réponse.Redirection(url, false);
Dans les try/catch:
Pour éviter la publication de la manipulation et de rendu HTML, vous devez faire plus:
http://web.archive.org/web/20101224113858/http://www.c6software.com/codesolutions/dotnet/threadabortexception.aspx