簡體   English   中英

更新面板+ window.open + https

[英]Update Panel + window.open + https

我正在使用c#和asp.net進行開發。

我有一些帶有更新面板的頁面。 在此更新面板中,有一個按鈕可重定向到新窗口。 這是通過在后面的代碼中使用scriptmanager調用window.open來完成的。 一切正常,直到我不使用https。 如果我通過路由器使用隧道來建立一條安全線路,直到路由器,然后使用代理來訪問我的網頁,則從更新面板中的按鈕調用的window.open會打開一個新的注冊卡,但在那里錯誤:找不到頁面。 在url中,我可以看到路由器沒有將proxy + IP放在路徑之前。 如果我刪除更新面板,則不會發生這種情況。使用Firebug,我可以看到在更新面板中我收到了POST,並在共振中,contentType為text / plain。 沒有更新面板,則有一個GET,響應contentType是text / html。 那么,如何在不刪除更新面板的情況下運行它呢?

直到我不在代理上使用https之前,它都可以正常工作:

protected void btnPrint_Click(object sender, EventArgs e)
{
     url = "~/Gui/Report/ReportViewer.aspx?ReportName=CustomerReport";
     Page page = (Page)HttpContext.Current.Handler;

     if (page == null) {
         Redirect(url);
     }

     url = page.ResolveUrl(url);

     string script = @"window.open(""{0}"");";

     script = String.Format(script, url);
     ScriptManager.RegisterStartupScript(page,
         typeof(Page),
         "Redirect",
         script,
         true);
}

<asp:UpdatePanel ID="UpdatePanel" runat="server">
    <ContentTemplate>
         <dx:ASPxButton runat="server" ID="btnPrint"
               Text="print" OnClick="btnPrint_Click">
         </dx:ASPxButton>
    </ContentTemplate>
</asp:UpdatePanel>

得到它了....

如果我使用代理服務器(奇怪的...?!?!),則腳本語言為javascript的信息會丟失。 如果我通過添加屬性“ language ='javascript'”自行構建腳本標簽,則一切正常。 誰能告訴我為什么這些信息會丟失?

這里是新代碼:

protected void btnPrint_Click(object sender, EventArgs e)
{
 url = "~/Gui/Report/ReportViewer.aspx?ReportName=CustomerReport";
 Page page = (Page)HttpContext.Current.Handler;

 url = page.ResolveUrl(url);

 string script = "window.open('" + url + "');";

 System.Text.StringBuilder sb = new System.Text.StringBuilder();
 sb.Append("<script language='javascript'>");
 sb.Append(script);
 sb.Append("</script>");

 ScriptManager.RegisterStartupScript(page,
     typeof(Page),
     "Redirect",
     script,
     false);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM