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