C# 没有响应的调用处理程序。重定向?

C# 没有响应的调用处理程序。重定向?,c#,asp.net,httphandler,C#,Asp.net,Httphandler,可能重复: 看看我下面的代码,我的问题很明显,我如何在不重定向的情况下调用ashx文件?我需要按照这个顺序执行代码,但是当页面重定向时,重定向下面的所有内容都不会执行。提前谢谢 protected void btnAddMach_Click(object sender, EventArgs e) { InsertMachine(); if (cbMachIcal.Checked && !cbMachGcal.Checked) { Res

可能重复:

看看我下面的代码,我的问题很明显,我如何在不重定向的情况下调用ashx文件?我需要按照这个顺序执行代码,但是当页面重定向时,重定向下面的所有内容都不会执行。提前谢谢

protected void btnAddMach_Click(object sender, EventArgs e)
{
    InsertMachine();

    if (cbMachIcal.Checked && !cbMachGcal.Checked)
    {
        Response.Redirect("iCal.ashx?type=Lead&leadID=" + Convert.ToInt32(hfLeadID.Value) + "&date=" +
                           txtMachTickDate.Text + "&time=" + txtMachTickTime.Text + "&user=" +
                           Request.Cookies["upProspektor"]["userName"] + "&model=" +
                           ddlModel.SelectedItem.Text);
    }
    else if (!cbMachIcal.Checked && cbMachGcal.Checked)
        CreateGcalEvent();
    else if (cbMachIcal.Checked && cbMachGcal.Checked)
    {
        CreateGcalEvent();
        Response.Redirect("iCal.ashx?type=Lead&leadID=" + Convert.ToInt32(hfLeadID.Value) + "&date=" +
                           txtLeadTickDate.Text + "&time=" + txtLeadTickTime.Text + "&user=" +
                           Request.Cookies["upProspektor"]["userName"] + "&model=" +
                           ddlModel.SelectedItem.Text);
    }

    ClearControls(upMachDetails);
    UpdateHasMach();

    btnUpComm.Style.Add("display", "none");
    btnNewMach.Style.Add("display", "none");
    btnUpMach.Style.Add("display", "none");

    if (hfAddMach.Value.ToString() == string.Empty)
    {
        hfAddMach.Value = "1";
        dvPl = dvProLeads(cmdProLeads());
        gvProLeads.DataSource = dvPl;
        gvProLeads.DataBind();
        this.upReports.Update();
    }

    Utilities.DisplayAlert(this, this.GetType(), "Machine Info Entered Successfully!");
}

我最初的想法是,这听起来像是一个有缺陷的设计。您正在将浏览器重定向到ASHX文件,然后尝试继续执行当前页面,包括将内容输出到页面。我建议重构代码来解决这个问题

……但是

如果您必须在页面的早期重定向,并且仍然在原始页面中执行某些代码,则可以使用使页面在调用时不会自动停止执行

protected void btnButton_Click(object sender, EventArgs e){
   if(redirect_flag){
      Response.Redirect(newUrl, false);
   }
   // This will still execute, as well as the remainder of the entire page
}

我仍然建议重构代码,而不是使用这种方法。

感谢您的快速回复,并对重复的帖子表示抱歉。我不是一个全职开发人员,所以重构是一个新事物,我听过这个术语,也看过工具栏上的菜单项,但仅此而已。有没有关于如何开始的建议?重构代码基本上意味着重新思考/重写代码。如果您有大量重复的代码,或者需要对某些内容进行逻辑重组,您可以重写代码以尝试解决这些问题。基本上,您希望将代码放入ashx中,并将核心功能移动到公共组件中,最有可能是库项目中的类。然后直接从代码隐藏中调用该类,而不是尝试通过http调用ASHX。