Есть URL, нужно определить, используется ли в качестве имени хоста localhost илил loop адрес типа 127.*.*.* и заменить его на реальное имя хоста данного компьютера.
URL типа
http://host[:port]/xbostik/xbostik2...
https://host[:port]/xbostik/xbostik2...
и т.д.
Как красиво сделать?
W>Как красиво сделать?
// псевдокод
Uri uri = new Uri("http://host[:port]/xbostik/xbostik2...");
if (uri.Host == "localhost")
uri.Host = mySuperCDEjectorHostName;
return uri.ToString();
Здравствуйте, Muxa, Вы писали:
W>>Как красиво сделать?
M>M>// псевдокод
M>Uri uri = new Uri("http://host[:port]/xbostik/xbostik2...");
M>if (uri.Host == "localhost")
M> uri.Host = mySuperCDEjectorHostName;
M>return uri.ToString();
M>
+ или loop адрес типа 127.*.*.*
Здравствуйте, Win32nipuh, Вы писали:
W>Есть URL, нужно определить, используется ли в качестве имени хоста localhost илил loop адрес типа 127.*.*.* и заменить его на реальное имя хоста данного компьютера.
С каких это пор такая тривиальщина стала предметом взывания к форумам??

Экзамены на носу, лабораторки подтягиваем?
W>http://host[:port]/xbostik/xbostik2...
W>Как красиво сделать?
Выучить предмет и сделать. Регэкспы вам в помощь (т.к. после '//' гарантированно идёт хост).
Здравствуйте, Win32nipuh, Вы писали:
W>Как красиво сделать?
Для манипуляций над частями Uri предназначен класс
UriBuilder
Слегка упрощенный (без проверок, просто всегда меняем имя хоста на полное имя текущего компьютера) пример того, что вы хотите, выглядит так:
public static string LocalHostFullHostName()
{
return Dns.GetHostEntry(Dns.GetHostName()).HostName;
}
public static Uri ToLocalUri(Uri address)
{
var uriBuilder = new UriBuilder(address);
var host = LocalHostFullHostName();
uriBuilder.Host = host;
return uriBuilder.Uri;
}