Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 在HttpModule中重用回发数据_Asp.net_Postback_Httpmodule - Fatal编程技术网

Asp.net 在HttpModule中重用回发数据

Asp.net 在HttpModule中重用回发数据,asp.net,postback,httpmodule,Asp.net,Postback,Httpmodule,我有一个定制的HttpModule,用于处理用户是否需要支付发票。如果用户进行了回发,但在我的HttpModule的invoice部分被“捕获”,我希望在支付发票后重新发布用户进行的原始回发,这样用户就不必重新开始 例如: 用户填写表单并将其提交给服务器 HttpModule标识用户有未付发票,并将用户重定向到付款页面 用户支付账单 重新发布来自第1点的原始帖子,用户可以继续 我已尝试将HttpContext(从HttpContext.Current)保存在会话状态,并在支付账单后将HttpCo

我有一个定制的HttpModule,用于处理用户是否需要支付发票。如果用户进行了回发,但在我的HttpModule的invoice部分被“捕获”,我希望在支付发票后重新发布用户进行的原始回发,这样用户就不必重新开始

例如:

  • 用户填写表单并将其提交给服务器
  • HttpModule标识用户有未付发票,并将用户重定向到付款页面
  • 用户支付账单
  • 重新发布来自第1点的原始帖子,用户可以继续
  • 我已尝试将HttpContext(从HttpContext.Current)保存在会话状态,并在支付账单后将HttpContext.Current设置为会话中的值,但不起作用

    HttpModule中断正常流程后,是否可以重新使用回发

    我的HttpModule如下所示: 类UnpaidInvoiceHttpModule:IHttpModule { 私有HttpApp应用程序

        public void Dispose(){}
    
        public void Init(HttpApplication context)
        {
            cHttpApp = context;
            context.PreRequestHandlerExecute += new EventHandler(CheckForUnpaidInvoices);
        }
    
        private void CheckForUnpaidInvoices(Object s, EventArgs e)
        {
            if (HttpContext.Current.Request.Path.EndsWith(".aspx") || HttpContext.Current.Request.Path.EndsWith(".asp") || HttpContext.Current.Request.Path == "/")
            {
                if (HttpContext.Current.Request.Path != "/login.aspx" 
                    && HttpContext.Current.Request.Path != "/Payment/Default.aspx"
                    && HttpContext.Current.Request.Path != "/Payment/Default_notice.aspx" 
                    && HttpContext.Current.User != null)
                {
                    if (HttpContext.Current.User.Identity.IsAuthenticated)
                    {
                        CustomUser mUser = ManagerSecurity.SecurityAPI.GetUser();      
                        if (mUser.HasUnpaidInvoices)
                        {
                            HttpContext.Current.Session["prepaymentHttpContext"] = HttpContext.Current;
                            HttpContext.Current.Response.Redirect("/Payment/Default.aspx");
                        }
                        else
                        {
                            if (HttpContext.Current.Session["prepaymentHttpContext"] != null)
                            {
                                HttpContext.Current = (HttpContext)HttpContext.Current.Session["prepaymentHttpContext"];
                            }
                        }
                    }
                }
            }
        }
    }
    

    应该为您提供执行所述操作所需的一切。请注意,此解决方案不会延迟发布。它会立即将数据重新发布到其他页面。您必须对其进行修改,以便将名称/值集合存储在某个位置(可能在发票页面的ViewState或数据库中)因此,在支付发票后,可以再次拉取它。当支付发票时,您可以拉取名称值集合并将其传递给“重定向和过帐”方法将用户恢复到其原始目的地。

    是否可以在会话中保存用户填写的数据,并且在支付页面处理完成后,您可以使用此会话数据进行进一步处理?@Krishna这是我尝试过的,但我似乎无法使其工作。也许我做错了?我尝试过了这样做:
    if(HttpContext.Current.Session[“预付费HttpContext”]!=null){HttpContext.Current=(HttpContext)HttpContext.Current.Session[“预付费HttpContext”];}
    HttpContext.Current=(HttpContext)真的行了吗HttpContext.Current.Session[“预付款HttpContext”];?我认为重定向会使新的客户端发布到“/Payment/Default.aspx”-页面,您永远不会保存当前会话。在if块中,我将在会话中保存数据,然后向支付页面进行服务器传输。*服务器传输只是因为不需要重定向。