【发布时间】:2017-12-02 23:58:01
【问题描述】:
我们有一个 ASPX 应用程序,它在第一次呈现页面时表现异常。
把你放在上下文中:
MyWeb -> MyPaymentWebAplication。
我们将我们的客户发送到支付站点,并且我们应该从支付站点返回网络并确认。
MyPaymentWebAplication -> MyWeb。
这就是问题发生的地方。
我们的网站有一个特殊的页面:GetResponseFromPaymentPage.aspx,这个页面只用于从支付中获取OK响应,所以理论上,它总是必须第一次渲染,通过这个,加入( !IsPostBack)。
这里的问题是页面没有加入这里而是跳出并且没有执行任何操作所以我们没有得到任何确认。
代码在这里:
try
{
HtmlForm frm = (HtmlForm)FindControl("frmRedireccion");
NameValueCollection parametros = (NameValueCollection)Session[ConstantesSesion.SESSION_PARAMETERS_RETURNED];
frm.Action = parametros["AppReturnURL"];
foreach (string key in parametros.Keys)
{
if (((HtmlInputHidden)frm.FindControl(key)) != null)
{
((HtmlInputHidden)frm.FindControl(key)).Value = parametros[key];
}
}
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append("<script language=Javascript>\n");
sb.Append(" window.opener.name = 'MyParent'; ");
sb.Append(" document.forms.namedItem('frmRedireccion').target = 'MyParent'; ");
sb.Append(" document.forms.namedItem('frmRedireccion').submit(); ");
sb.Append(" self.window.close(); ");
sb.Append("</script>");
ClientScript.RegisterStartupScript(this.GetType(), "script", sb.ToString());
}
catch (Exception ex)
{
ExceptionService.SetException("Excepción en el método " + MethodBase.GetCurrentMethod().Name, ex);
}
回到网络,我们应该接收参数并开始在最近打开的页面上做我们的事情。
protected void Page_Load(object sender, EventArgs e)
{
//We are writing these traces on DB!
MyTraces con = new MyTraces();
con.InsertTrace("Im a Trace!", "!We are in!", System.DateTime.Today, "1");
//************************************************************
if (!Page.IsPostBack)
{
// These ones are not behing seen anywhere in DB
con.InsertTrace("Im a Trace!", "!We are in step 2 Already!", System.DateTime.Today,"2");
因此,我们假设 !Page.IsPostBack 没有返回 True,但应该返回 True,因此,我们的第二个跟踪没有被写入 DB。
¿有人知道是什么导致了这个问题吗?我们正在考虑我们系统上的任何补丁、更新或其他东西,因为我们没有其他解释,这个应用程序已经运行了一段时间,没有任何问题。
【问题讨论】:
-
恐怕问题不会从您提供的代码中看出,我建议通过毕业和测试来消除部分代码,如果有的话,从母版页开始等等在。希望对您有所帮助。
-
向我们展示您用于访问
GetResponseFromPaymentPage.aspx的代码。 -
在stackoverflow.com/questions/5650580/… 进行测验,看看它如何识别回帖。我的猜测是上一页设置了
__PREVIOUSPAGE。 -
@mjwills 我们用您在代码第一部分中看到的脚本调用它
-
您能查看源代码并向我们展示 frmRedireccion 表单的内容(来自 HTML)吗?
标签: c# asp.net url-redirection