2

我正在爲一個項目,它有網絡花園場景,並不能保留會話/內存中的任何數據。 asp.net頁面從Appian(bpm工具)打開,我們通過查詢字符串傳遞id。 現在,客戶端要求我在閱讀後隱藏查詢字符串參數。但是,在這種情況下,登錄頁面爲http://a.aspx?id='123',讀取該值後,我們必須重定向到b.aspx而不公開id(查詢字符串)。 請建議我一個合適的方法來實現這一點。我真的不知道這個。重定向到一個頁面隱藏查詢字符串參數asp.net

回答

3

您可以將鍵/值對添加到標題中,它將不會在查詢字符串中可見。

HttpContext.Current.Response.Headers.Add(key, value); 

string headerVal = HttpContext.Current.Request.Headers[key]; 
+0

b.aspx代碼可以請你給我一個例子(如果可能的話甚至是粗略的)? – rahulsen002

+0

代碼將在負載平衡的情況下部署在多個服務器中。所以,假設第一個請求被髮送到服務器A,在那裏你設置了鍵值對,第二個請求將被髮送到服務器B,在那裏它不會得到值在httpcontext中設置。在這種情況下會出現這種情況嗎? – rahulsen002

+0

服務器A可以設置變量,服務器B可以讀取它們。標題存儲在文檔中,以便它們能夠傳播。測試它... –

0

您可以在服務器端或HTTP POST而不是GET使用會話變量。

Session["id"] = id; 

然後在b的負載檢索它。

要使用Post可以使用隱藏字段和表單。

//You can set it like this 
<form name='IdForm' action='b.aspx' method='post'>> 
<asp:HiddenField id="WhateverId" runat="server" value='<%= Request.QueryString["whateverID"] %>' /> 
</form> 

在重定向使用JavaScript發佈

function Redirect() { 
    document.forms["IdForm"].submit(); 
} 

您必須使用此哪裏重定向發生JS腳本。

終於在背後

HttpContext.Current.Request.Form["WhateverId"] 
+0

代碼將被部署在負載平衡的服務器中,所以不能使用會話。 – rahulsen002

+1

共享會話可以實現。 –

+0

你也可以通過用戶會話來負載平衡服務器,而不是請求。您的性能下降幾乎不存在,您將可以使用Session。這裏唯一的缺點是,如果一臺服務器出現故障,您的用戶必須重新登錄 –

相關問題