2012-09-19 23 views
0

我在開始時使用server.transfer它完美的工作。但後來我添加其他語言來我的網站,我嘗試做,但它無法與新的語言Server.Transfer不轉移一些URL

我的代碼如下

if (Request.RawUrl.Contains("/tr/")) 
    { 
     Server.Transfer("tr/" + dt.Rows[0]["SourceURL"].ToString()); 

    } 
    else if (Request.RawUrl.Contains("/en/")) 
    { 
     Server.Transfer("en/" + dt.Rows[0]["SourceURL"].ToString()); 

    } 

的「TR」的轉移工作,高超,但連接失敗,它停留在我的pagenotfound並沒有轉移到目標網址。我也檢查編寫整個url像http://mysite.com/en/test.aspx?k=13,它也可以,但是當server.transfer它失敗

可以有人說爲什麼?

感謝

+0

當您使用Request.Redirect(「」)使用相同的URL時它失敗嗎? –

+0

不,它不與response.redirect()失敗,但server.transfer和request.redirect是不一樣的,因爲我知道所以例如,當我打電話像www.mysite.com/en/home頁我不能使用response.redirect( ) 我對嗎? – ercan

+0

不,它們不一樣,所以值得仔細閱讀它們的區別。如果我記得對,Server.Transfer()更有效,因爲請求不會一直髮送回請求者,而是在服務器內處理。 Resonse.Redirect()的工作原理與用戶點擊/手動輸入URL一樣。所以你應該可以在你的mysite.com網站上打電話給 –

回答

0

我想的Response.Redirect將您的情況爲網站「www.mysite.com/en/home」

的工作,它不會像Server.Transfer的高效,但應該也一樣。我不確定它爲什麼適用於「tr /」,但不是「en /」,這可能是由於相對路徑的一些問題。你可以嘗試在你的URL前添加一個tilda「〜」。

 Server.Transfer("~/en/" + dt.Rows[0]["SourceURL"].ToString());