0

这是一个非常奇怪的场景,

假设,我以这种方式浏览我的网站,如“ http://web.site.com ”。我的网站完美地显示了我的主页,在顶部的这个页面上,我正在使用一个用户控件,而这个用户控件正在显示一个注销链接按钮。

案例 1:当我在这种情况下单击此按钮时,它不会触发,

案例 2:但是如果我像“ http://web.site.com/default.aspx ”一样打开我的网站,那么它可以正常工作并被解雇。

有人可以建议我吗?

以下控件在用户控件中使用

<asp:linkbutton id="logoutLinkButton" runat="server" 
         onclick="logoutLinkButton_Click1">logout</asp:linkbutton>

和链接按钮事件代码是

protected void logoutLinkButton_Click1(object sender, EventArgs e)
         {
             var url = this.Request.RawUrl;
             Authentication.Logout();
             Response.Redirect(url); 
         }
4

2 回答 2

1

问题是您正在使用Request.RawUrl

原始 URL 定义为 URL 中域信息之后的部分。在 URL 字符串 http://www.contoso.com/articles/recent.aspx中,原始 URL 是 /articles/recent.aspx。原始 URL 包括查询字符串(如果存在)。

所以你的情况"http://web.site.com" RawUrl是空的,因此什么也不做。相反,您可以使用Request.Url.GetLeftPart(UriPartial.Authority)like

protected void logoutLinkButton_Click1(object sender, EventArgs e)
{
   var url = this.Request.Url.GetLeftPart(UriPartial.Authority);
   Authentication.Logout();
   Response.Redirect(url); 
}
于 2013-05-08T11:42:42.367 回答
0

试试Request.URL' instead ofRequest.RawUrl`

于 2013-05-08T11:46:24.733 回答