![](/img/trans.png)
[英]Whenever RewritePath() is called, Page.IsPostBack is false
[英]aspx (!Page.IsPostBack) Returns False on rendering page for the first time
我們有一個ASPX應用程序,它在首次呈現頁面時表現異常。
使您處於上下文中:
MyWeb-> MyPaymentWebAplication。
我們將客戶發送到付款站點,我們建議將付款站點的信息發送回Web。
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);
}
回到Web,我們應該獲取參數並在最近打開的頁面上開始執行操作。
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,應該返回它,並且由此,我們的第二條跟蹤沒有寫入DB。
¿有人知道什么可能導致此問題嗎? 我們正在考慮系統上的任何補丁程序,更新或其他問題,因為我們沒有其他解釋,該應用已運行了一段時間,沒有任何問題。
我回來了一個解決方案。
這是引起麻煩的塊代碼。
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());
由於某些未知的原因,當使用此代碼進行重定向時,新創建的頁面的行為就好像是在執行回發而不是首次呈現一樣。
我們不知道是什么原因造成的,我們懷疑它與某些Windows安全修補程序有關,但我們無法對其進行探測。
在這種情況下,我們用以下代碼替換了此代碼:
Response.redirect();
我們對其進行了一些微調,以使其執行POST而不是GET(默認)並啟動並運行。
感謝您的時間和幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.