2013-04-05 61 views
1

我們使用Response.Redirect將用戶發送到網站以進行問卷調查。我們有一個數據庫,存儲關於用戶參加調查的資格的信息,如果他們符合條件,他們的主頁上會出現一個「Take Survey」按鈕,並且一個變量存儲調查的URL。在Response.Redirect上捕獲錯誤

TakeSurvey_Click情況下,原來的代碼如下:

FormsAuthentication.SignOut(); 
Response.Redirect(TheURL); 

漂亮的直線前進和偉大的工作多年。最近,我們更改了用戶被重定向到的網站。成千上萬的用戶沒有問題;然而,對於一個相當重要的羣體(2-3%),當他們按下「Take Survey」按鈕時沒有任何反應。

在搜索互聯網之後,我確信我已經嘗試了所有推薦的方法來處理這種情況,但沒有人真正做到我想要的。我想要發生的是,如果Take Survey不會將用戶發送到鏈接(順便說一句,我們已經檢查了爲非工作鏈接生成的鏈接,並且它們是很好的鏈接),我想要一個信息頁面顯示告訴他們我們遇到了問題,如果他們能夠向我們發送關於他們的環境的一些信息,那麼在解決問題時會很有用。看起來很簡單,但無論我嘗試什麼,我都無法讓頁面無法顯示,或者,如果我使用覆蓋併發送錯誤,它永遠不會顯示,也不會重定向。

任何人有任何想法?

回答

0

Response.Redirect向瀏覽器發送「302 Moved」響應。瀏覽器負責導航到目標網址。

因此,一旦您發佈了Response.Redirect,就無法檢測到瀏覽器未成功導航到您選擇的網址。

現在,有幾種不同的方式(即我能想到的就處理這個):

  • 您可能能夠設置document.location從客戶端JavaScript。
  • 發出重定向的頁面可以定期刷新自己(使用JavaScript或meta refresh)。如果它發現自己仍然在同一頁面上,那麼它可能會發出警告。
  • 或者更簡單地說,發佈重定向的頁面可能只有說明,指示「我們正在向您發送調查報告,如果您在30秒之後仍在查看此消息,則出現問題。」 。