Заменить строку на другую в request.rawurl не работает

Я хочу заменить некоторую строку в своем URL-адресе следующим образом

request.RawUrl.ToString().Replace("sometext566666", "othertest")

но не работает почему так?

Например, исходный URL-адрес похож на

/sometext4554544454.aspx

а я хочу вот так

/sometext.aspx

person Siva Myneni    schedule 28.03.2013    source источник
comment
Предположительно, это C# или VB.Net. Но мы не должны должны гадать. Пожалуйста, добавьте соответствующий языковой тег к вашему вопросу.   -  person Damien_The_Unbeliever    schedule 28.03.2013
comment
String.Replace() это работает, но проблема в том, что вы, вероятно, не перенаправили на новый URL   -  person cat_minhv0    schedule 19.04.2013


Ответы (2)


Я предполагаю, что это .NET. Если это так, вы должны знать, что String.Replace() возвращает строку new, содержащую результат замены (как и все другие методы, предназначенные для изменения строки).

Поэтому вам нужно присвоить результат переменной или полю, чтобы сохранить результат. В некоторых случаях вы можете присвоить результат тому же месту, откуда вы получили исходную строку. Но вам не разрешено перезаписывать RawUrl (и это могло бы сбить вас с толку).

person Damien_The_Unbeliever    schedule 28.03.2013
comment
извините, что не упомянул язык. Это С#. это неправильный URL-адрес /sometext4554544454.aspx, поэтому я хочу перенаправить этот неправильный URL-адрес, чтобы исправить его, заменив нежелательные символы. Я в замешательстве, почему string.replace не работает для этого request.rawurl.tostring(). это мой код для этого. res.Status = 301 Перемещено навсегда; строка sURL=req.RawUrl.ToString(); строка newURL=sURL.Replace(stateName, dr[statename].ToString().ToLower()); res.AddHeader(Location, newURL); res.Flush(); Отправить(); - person Siva Myneni; 28.03.2013
comment
@SivaMyneni - вы можете отредактировать свой вопрос (ссылка внизу, под тегами), чтобы прояснить ситуацию или добавить теги. Я бы посоветовал вам добавить (по крайней мере) тег С#. - person Damien_The_Unbeliever; 28.03.2013

Используемый вами оператор работает, но вы не присваиваете результат функции замены, а просто выполняете ее.

request.RawUrl.ToString().Replace("sometext566666", "othertest")

Если вы хотите сохранить результат, вам нужно будет присвоить его строке.

e.g.

String result = request.RawUrl.ToString().Replace("sometext566666", "othertest");

В противном случае вы можете назначить его тому же RawURL, но я думаю, что это URI, поэтому вам нужно будет использовать новый URI, например:

request.RawUrl = new URI(request.RawUrl.ToString().Replace("sometext566666", "othertest"));

Тем не менее, я не уверен, что вы действительно можете редактировать это свойство.

person Gary    schedule 19.09.2014