【问题标题】:Server.Transfer not tranfer some urlsServer.Transfer 不传输某些 url
【发布时间】:2012-09-19 13:31:01
【问题描述】:

我在开始时使用 server.transfer 它运行良好。但后来我在我的网站上添加了另一种语言,我尝试这样做,但使用新语言失败了

我的代码在下面

   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 失败时

谁能说出原因?

谢谢

【问题讨论】:

  • 同一个URL使用Request.Redirect("")会失败吗?
  • 不,它不会因 response.redirect() 而失败,但 server.transfer 和 request.redirect 与我所知道的不同,例如当我调用像 www.mysite.com/en/home 这样的页面时我不能使用 response.redirect() 对吗?
  • 不,它们不一样,因此值得一读它们的区别。如果我没记错的话, Server.Transfer() 效率更高,因为请求不会一直发送回请求者,而是在服务器内处理。 Resonse.Redirect() 就像用户单击/手动输入 URL 一样工作。所以你应该可以在你的 mysite.com 网站上调用它
  • 对不起,我无法得到您的评论。对不起我的英语:(

标签: c# asp.net server.transfer


【解决方案1】:

我认为 Response.Redirect 适用于网站“www.mysite.com/en/home”的情况

它不会像 Server.Transfer 那样高效,但应该也能正常工作。我不确定为什么它适用于“tr/”,而不是“en/”,这可能是由于相对路径的一些问题。您可以尝试在 URL 前添加一个波浪号“~”。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-29
    • 1970-01-01
    相关资源
    最近更新 更多