Я хочу написать небольшой вспомогательный метод, который возвращает базовый URL-адрес сайта. Вот что я придумал:
public static string GetSiteUrl()
{
string url = string.Empty;
HttpRequest request = HttpContext.Current.Request;
if (request.IsSecureConnection)
url = "https://";
else
url = "http://";
url += request["HTTP_HOST"] + "/";
return url;
}
Есть ли в этом какая-то ошибка, о которой вы можете подумать? Кто-нибудь может улучшить это?
c#
asp.net
uri
httprequest
Jaggu
источник
источник
Ответы:
Попробуй это:
источник
Это оно ;)
источник
Популярное
GetLeftPart
решение не поддерживается в версии PCLUri
, к сожалению.GetComponents
Однако если вам нужна переносимость, это должно помочь:источник
Я считаю, что ответы выше не учитывают, когда сайт не находится в корне сайта.
Это для контроллера WebApi:
источник
Для меня @ warlock's выглядит как лучший ответ здесь, но я всегда использовал это в прошлом;
Или в контроллере WebAPI;
что удобно, так что вы можете выбрать, какой формат выхода вы хотите. Мне непонятно, почему существуют две такие разные реализации, и, насколько я могу судить, этот метод и @ warlock возвращают точно такой же результат в этом случае, но похоже, что
GetLeftPart()
он также будет работать, например, для несерверныхmailto
тегов Uri. ,источник
Это гораздо более надежный метод.
источник
/
если вы разместите в каком-либо домене приложения, например, yourserver / yourapplicationname / yourrootpathЯ иду с
источник
Основываясь на том, что написал Warlock, я обнаружил, что корневой каталог виртуального пути необходим, если вы не размещены в корневом каталоге вашей сети. (Это работает для контроллеров MVC Web API)
источник
Я использую следующий код из Application_Start
String baseUrl = Path.GetDirectoryName(HttpContext.Current.Request.Url.OriginalString);
источник
Это работает для меня.
Поэтому, если вы хотите получить доступ к вашему доменному имени, рассмотрите возможность включения имени приложения в случае:
====================================
Для dev.x.us/web
вернуть этот сильный текст
источник
Пожалуйста, используйте код ниже
источник
источник
Вы могли бы добавить в порт для не порт 80 / SSL?
что-то вроде:
и использовать это в конечном результате?
источник
Request.Url.Authority
будет включать номер порта, если он нестандартный