我正在使用 c# 和 asp.net 进行开发。
我有一些带有更新面板的页面。在此更新面板中,有一个重定向到新窗口的按钮。这是通过在后面的代码中使用脚本管理器调用 window.open 来完成的。在我不使用 https 之前一切正常。如果我使用带路由器的隧道连接到路由器,然后使用代理访问我的网页,则从更新面板中的按钮调用的 window.open 会打开一个新的注册卡,但我得到了错误:找不到页面。在网址中我可以看到路由器没有将代理+IP放在路径之前。如果我删除更新面板,则不会发生这种情况。使用 Firebug,我可以看到使用更新面板我得到了一个 POST,并且在 resonse 中,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>