Server.Transfer не передает некоторые URL

Я использую 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. Я также проверяю, чтобы написать весь URL-адрес, например http://mysite.com/en/test.aspx?k=13, и он тоже работает, но когда server.transfer не работает

кто-нибудь может сказать почему?

Благодарность


person ercan    schedule 19.09.2012    source источник
comment
Сбой при использовании Request.Redirect () с тем же URL-адресом?   -  person Mikey Mouse    schedule 19.09.2012
comment
нет, это не сработает с response.redirect (), но server.transfer и request.redirect не такие, как я знаю, поэтому, например, когда я вызываю страницу вроде www.mysite.com/en/home, я не могу использовать response.redirect () я прав?   -  person ercan    schedule 20.09.2012
comment
Нет, это не одно и то же, поэтому стоит прочитать о разнице. Если я правильно помню, Server.Transfer () более эффективен, поскольку запрос не полностью отправляется обратно запрашивающей стороне, он обрабатывается на сервере. Resonse.Redirect () работает так же, как пользователь щелкнул / вручную ввел URL-адрес. так что вы должны иметь возможность вызывать его на своем веб-сайте mysite.com   -  person Mikey Mouse    schedule 20.09.2012
comment
извините, я не могу получить ваш комментарий. Извините за мой английский :(   -  person ercan    schedule 20.09.2012


Ответы (1)


Думаю, Response.Redirect подойдет в вашей ситуации для веб-сайта www.mysite.com/en/home.

Он не будет таким эффективным, как Server.Transfer, но должен работать так же хорошо. Я не уверен, почему он работает с «tr /», но не с «en /», это может быть связано с некоторыми проблемами с относительными путями. Вы можете попробовать поставить тильду "~" перед своим URL-адресом.

      Server.Transfer("~/en/" + dt.Rows[0]["SourceURL"].ToString());
person Mikey Mouse    schedule 20.09.2012